shell中一些特殊符号的使用

  • $()和``都用来做命令替换用的
  • $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代替上述操作符

猜你喜欢

转载自blog.csdn.net/qq_44209563/article/details/107394888