Shell编程脚本中常用符号的含义
$0
表示脚本文件名
$1, $2, ……
表示具体的参数
$$
表示当前shell的进程pid
$!
Shell最后运行的后台进程的PID
$#
表示实际传入参数的个数
#$?
表示上一次执行的返回值,一般0表示成功
$@, $*,"$@","$*"
表示shell脚本接受的参数列表,不包括$0
$*,$@一样,都是传递整个参数列表,
但是当被""引用时,
$@不变,为多个字符串,
而$*为一个字符串,并且如果这个参数列表为空,则字符串为空字符串,而非不存在
$ 后面加变量表示引用这个变量的值
$var
$command
& 放在启动参数后面表示设置此进程为后台进程
command var1 var2 &
command > /dev/null 2>&1
该语句的函数就是将标准输出和标准错误输出重定向到伪设备/dev/null, 它的作用就是执行某个命令将不会有任何日志输出。
>&2
也就是把结果输出到和标准错误一样;之前如果有定义标准错误重定向到某file文件,那么标准输出也重定向到这个file文件。
其中&的意思,可以看成是“The same as”、“与...一样”的意思
readonly
用来定义只读变量
source
使Shell读入指定的Shell程序文件并依次执行文件中的所有语句
source 与 bash 的区别
source 在当前进程中执行,bash 启用新的进程执行
默认情况下,shell进程都是串行执行(即使通过 bash 启动新的进程,也会串行执行)
通过将shell设置为后台执行,可以实现shell的并发
下表列出了常用的字符串运算符,假定变量 a 为 "abc",变量 b 为 "efg":
运算符 | 说明 | 举例 |
---|---|---|
= | 检测两个字符串是否相等,相等返回 true。 | [ $a = $b ] 返回 false。 |
!= | 检测两个字符串是否相等,不相等返回 true。 | [ $a != $b ] 返回 true。 |
-z | 检测字符串长度是否为0,为0返回 true。 | [ -z $a ] 返回 false。 |
-n | 检测字符串长度是否为0,不为0返回 true。 | [ -n $a ] 返回 true。 |
str | 检测字符串是否为空,不为空返回 true。 | [ $a ] 返回 true。 |
[ -z "$pid" ]
单对中括号变量必须要加双引号
[[ -z $pid ]]
双对括号变量不用加双引号
参考
Shell—关于source,Bash如何执行
shell编程之脚本参数
shell脚本-n -z的含义解析
commond > /dev/null 2>&1 命令详解
shell字符串运算符= != -z -n str的介绍和使用
【shell】shell中各种括号的作用