shell脚本if

  • 脚本参数
调用 解释
$# 是传给脚本的参数个数
$0 是脚本本身的名字
$1 是传递给该shell脚本的第一个参数
$2 是传递给该shell脚本的第二个参数
$@ 是传给脚本的所有参数的列表
$* 是以一个单字符串显示所有向脚本传递的参数,与位置变量不同,参数可超过9个
$$ 是脚本运行的当前进程ID号
$? 是显示最后命令的退出状态,0表示没有错误,其他表示有错误
  • 文件判断
调用 解释
-r 用户可读为真
-w 用户可写为真
-x 用户可执行为真
-f 文件为正规文件为真
-d 文件为目录为真
-c 文件为字符特殊文件为真
-b 文件为块特殊文件为真
-s 文件大小非0时为真
-t 当文件描述符(默认为1)指定的设备为终端时为真
  • 逻辑判断
调用 解释
-a 与(and)
-o 或(or)
!
#例如
if [ "$a" -eq 1 -o "$b" -eq 2 ]  &&  [ "$c" -eq 3 ]; then
IF高级特性:

双圆括号(( )):表示数学表达式
在判断命令中只允许在比较中进行简单的算术操作,而双圆括号提供更多的数学符号,而且在双圆括号里面的’>’,’<'号不需要转意。

双方括号[[ ]]:表示高级字符串处理函数

双方括号中判断命令使用标准的字符串比较,还可以使用匹配模式,从而定义与字符串相匹配的正则表达式。

双括号的作用:

在shell中,[ $a != 1 || $b = 2 ]是不允许出,要用[ $a != 1 ] || [ $b = 2 ],而双括号就可以解决这个问题的,[[ $a != 1 || b = 2 ] ] 。 又 比 如 这 个 [ " b = 2 ]]。又比如这个[ " b=2]]["a" -lt “ b " ] , 也 可 以 改 成 双 括 号 的 形 式 ( ( " b" ],也可以改成双括号的形式((" b"](("a”< “$b”))

  • if条件判断语法
调用 解释 事例|
-eq 等于 如:if [ “ a " − e q " a" -eq " a"eq"b” ]
-ne 不等于 如:if [ “ a " − n e " a" -ne " a"ne"b” ]
-gt 大于 如:if [ “ a " − g t " a" -gt " a"gt"b” ]
-ge 大于等于 如:if [ “ a " − g e " a" -ge " a"ge"b” ]
-lt 小于 如:if [ “ a " − l t " a" -lt " a"lt"b” ]
-le 小于等于 如:if [ “ a " − l e " a" -le " a"le"b” ]
> 大于(需要双括号) 如:if((“ a " > " a" > " a">"b”))
>= 大于等于,需要双括号 如:if((“ a " > = " a" >= " a">="b”))
<= 小于等于,需要双括号 如:if((“ a " > = " a" >= " a">="b”))
  • 字符串比较
调用 解释
= 等于,如:if [ “ a " = " a" = " a"="b” ]
== 等于,如:if [ “ a " = = " a" == " a"=="b” ],与=等价
[ -z STRING ] 如果STRING的长度为零则返回为真,即空是真
[ -n STRING ] 如果STRING的长度非零则返回为真,即非空是真
[ STRING1 ] 如果字符串不为空则返回为真,与-n类似
[ STRING1 == STRING2 ] 如果两个字符串相同则返回为真
[ STRING1 != STRING2 ] 如果字符串不相同则返回为真
[ STRING1 < STRING2 ] 如果 “STRING1”字典排序在“STRING2”前面则返回为真。
[ STRING1 > STRING2 ] 如果 “STRING1”字典排序在“STRING2”后面则返回为真。
  • 事例1
#!/bin/bash
a=10
b=20
if [ $a -lt $b ] && [ $a -eq 11 ]
then
    echo "小于20"
fi
# 结果:小于20
  • 事例2
#!/bin/bash
a=0
b=0
c=5
if [ $a = 0 -a $b = 0 ] && [ $c != 0 ]; then
    echo "success"
fi
# 结果:success
  • 事例3
#!/bin/bash
a=0
b=0
c=5
if [ $a -eq 0 -a $b -eq 0 ] && (($c >= 5)); then
    echo "success"
fi
# 结果:success

猜你喜欢

转载自blog.csdn.net/weixin_38011805/article/details/113653337