- $()和``都用来做命令替换用的
$var
和${var}
都可以做变量替换$[]
和$(())
进行数学运算
NUM=1
$[$NUM+1]
$((NUM+1))
以上对NUM进行运算的效果是一样的
- &&运算符
command 1 && command 2
只有command 1 执行成功以后才执行command 2
- || 运算符
command 1 || command 2
command 1执行失败后才执行command 2
单引号和双引号的区别
单引号:是所见即所得
,单引号中的内容是什么,则输出的时候,内容都不会改变
双引号:双引号中的内容如果有变量、命令(加反引号) 、特殊转义符
,会先将它们先解析,再输出。
示例:
当单引号和双引号中的内容都包含命令时,输出的结果如下:
$$获取当前执行脚本的进程号
首先要执行的脚本内容如下:
在后台运行脚本(&符号表示后台运行),结果如下,显示进程号
查看a.pid文件内容,发现同以上的进程号相同:
后台运行的脚本也可以采用ps -ef | grep test_pid | grep -v grep
命令来查看进程号
- test_pid.sh脚本中的
echo $$
命令得到的是进程号
双小括号"(())"进行运算
双小括号内可以进行数值运算,赋值,逻辑运算
- 运算
echo $((2+3))
- 赋值
- 逻辑运算
((5>4&&4==4)) 常用于条件判断
示例:
- 注
“(())”里的字符之间有或没有空格都不影响
${#i}作用
${#i} ,#是计算变量 i 的字符个数
条件测试语法
语法
语法 | 说明 |
---|---|
test 测试表达式 | 使用test命令 |
[ 测试表达式 ] | 测试表达式与[]两边界之间需要一个空格;与test命令等价 |
[[ 测试表达式 ]] | 测试表达式与双中括号两边界之间需要一个空格 |
((测试表达式)) | 测试表达式与双小括号两边界可以不使用空格,一般用于if语句 |
区别
- 在[[]]双中括号中可以使用通配符等进行模式匹配,其他的不行
- &&、||、>、<等操作符可以应用于[[]]中,不能用于[];在[]中一般使用-a、-o、-gt、-lt代替上述操作符