Shell 脚本常用一些命令解释

2020年1月7日21:45:03 评论
前言

shell 脚本中一些经常用到的参数

    $# :传递到脚本的参数个数;
    $0: 执行的文件名;
    $n:n 代表一个数字,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,以此类推……
    $*:以一个单字符串显示所有向脚本传递的参数;
    $@:与$*相同,但是使用时加引号,并在引号中返回每个参数。
    $$:脚本运行的当前进程ID号;
    $!:后台运行的最后一个进程的ID号;
    $?:显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误;
    $-:显示Shell使用的当前选项,与set命令功能相同;

Shell 运算符:
1. 表达式和运算符之间要有空格,例如 2+2 是不对的,必须写成 2 + 2;
2. 完整的表达式要被 ` ` 包含,例如:val=`expr 2 + 2`;
3. 乘法:`expr $a \* $b` ,乘号(*)前边必须加反斜杠(\)才能实现乘法运算;

Shell关系运算符:关系运算符只支持数字,不支持字符串,除非字符串的值是数字,例如a=10,b=20;
    -eq:检测两个数是否相等,相等返回 true,[ $a -eq $b ] 返回 false;
    -ne:检测两个数是否不相等,不相等返回 true,[ $a -ne $b ] 返回 true;
    -gt:检测左边的数是否大于右边的,如果是,则返回 true,[ $a -gt $b ] 返回 false;
    -lt:检测左边的数是否小于右边的,如果是,则返回 true,[ $a -lt $b ] 返回 true;
    -ge:检测左边的数是否大于等于右边的,如果是,则返回 true,[ $a -ge $b ] 返回 false;
    -le:检测左边的数是否小于等于右边的,如果是,则返回 true,[ $a -le $b ] 返回 true;
    ==:相等。用于比较两个数字,相同则返回 true,[ $a == $b ] 返回 false;
    !=:不相等。用于比较两个数字,不相同则返回 true,[ $a != $b ] 返回 true;
    > 和 < 进行比较时,需要使用[[ ... ]] 条件判断结构;

Shell布尔、逻辑运算符:假定变量 a 为 10,变量 b 为 20:
    !:非运算,表达式为 true 则返回 false,否则返回 true,[ ! false ] 返回 true;
    -o:或运算,有一个表达式为 true 则返回 true,[ $a -lt 20 -o $b -gt 100 ] 返回 true;
    -a:与运算,两个表达式都为 true 才返回 true,[ $a -lt 20 -a $b -gt 100 ] 返回 false;
    &&:逻辑的 AND,[[ $a -lt 100 && $b -gt 100 ]] 返回 false;
    ||:逻辑的 OR,[[ $a -lt 100 || $b -gt 100 ]] 返回 true;

注:[]等价于test命令;

Shell字符串独有运算符:
    -z:检测字符串长度是否为0,为0返回 true;
    -n:检测字符串长度是否为0,不为0返回 true;
    $:检测字符串是否为空,不为空返回 true;

文件测试运算符:
操作符     说明     举例
-b file     检测文件是否是块设备文件,如果是,则返回 true。     [ -b $file ] 返回 false。
-c file     检测文件是否是字符设备文件,如果是,则返回 true。     [ -c $file ] 返回 false。
-d file     检测文件是否是目录,如果是,则返回 true。     [ -d $file ] 返回 false。
-f file     检测文件是否是普通文件(既不是目录,也不是设备文件),如果是,则返回 true。     [ -f $file ] 返回 true。
-g file     检测文件是否设置了 SGID 位,如果是,则返回 true。     [ -g $file ] 返回 false。
-k file     检测文件是否设置了粘着位(Sticky Bit),如果是,则返回 true。     [ -k $file ] 返回 false。
-p file     检测文件是否是有名管道,如果是,则返回 true。     [ -p $file ] 返回 false。
-u file     检测文件是否设置了 SUID 位,如果是,则返回 true。     [ -u $file ] 返回 false。
-r file     检测文件是否可读,如果是,则返回 true。     [ -r $file ] 返回 true。
-w file     检测文件是否可写,如果是,则返回 true。     [ -w $file ] 返回 true。
-x file     检测文件是否可执行,如果是,则返回 true。     [ -x $file ] 返回 true。
-s file     检测文件是否为空(文件大小是否大于0),不为空返回 true。     [ -s $file ] 返回 true。
-e file     检测文件(包括目录)是否存在,如果是,则返回 true。     [ -e $file ] 返回 true。
weinxin
我的微信
这是我的微信扫一扫

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: