Local 表示局部变量
默认不加任何参数的是全局变量
$num
表示变量的获取,在特殊形式下可以使用${num}
来表示。
如果用单引号扩其变量,表示的是原封不动的输出。
通过ls -l
命令可以查看某个文件具备的权限,比如
touch 1.sh
chmod +x 1.sh
ls -l
那么展示的结果可能是
-rwxrwxr-x 1 uewell uewell 0 Feb 21 22:42 1.sh
其中第一列是关键的信息-rw-rw-r--
,抛开第一个-
不看,后面的每 3 个分为一组,那么此时可以分为如下所示。
rwx #拥有者权限
rwx #所属组权限
r-x #其他用户权限
x
表示execute,即执行权限,可以用 1 代替需要注意的是,当我们创建一个文件之后,默认是不具备 x 权限的,但是上述指令中通过了chmod +x xx.sh
为文件 添加了执行权限。
# 方法 1:具备x权限的时候
chmod +x test.sh
./test.sh
# 方法 2:通过 sh 执行
sh test.sh
# 方法 3
source test.sh
$?
表示上一条命令执行结果。通常 1 表示成功,0 表示失败$0
表示当前执行的 shell 脚本的名称$1-$9
表示当前第 n个参数值举个例子
if [ $? -nq 0 ]
echo "success"
else
echo "fail"
>
将左边的内容覆盖到右边的文本源中,比如ifconfig > ip.log
>>
功能同上,不过不是覆盖,是追加append
方法1:
yum -y install dos2unix
dos2nuix install.sh
sh install.sh
方法 2:
sed -i 's/\r//' install.sh
sh install.sh
在编写 shell 脚本中,切记不能使用相对路径,一定要使用功能绝对路径,否则很容易出现一些意外情况。
我在编写一个脚本的时候,当前目录下有一个路径db/xx.data
,在 shell
脚本中有类似这么一行指令
path="db/xx.data"
text=$(cat ${path})
echo "text:${text}"
怎么样都无法获取到xx.data
中的内容,经过查阅资料发现:脚本中使用相对路径是大忌
,修改如下:
# 获取当前 shell 脚本执行路径
BASE_DIR=$(cd "$(dirname "$0")"; pwd)
# 拼接完成的路径
path="${BASE_DIR}/db/xx.data"
text=$(cat ${path})
echo "text:${text}"