linux的shell篇 ----if

if 在shell 脚本编写中的用的很多,我现在把常用的一些写一下,权当记录

参考资料:https://blog.csdn.net/l_liangkk/article/details/82990137

1、if基本格式

if基本格式样例

if [ $1 == "ab" ]; then
    echo "you had enter ab"
elif [ $1 == "cd"x ]; then
    echo "you had enter cd"
else
    echo "you had enter unexpected word"
fi

以if开头 fi 结尾 需要注意的是if对于空格要求很严格,在书写过程中不规范,缺少空格会造成shell运行出现问题

2、if中判断式的比较

补充一点 在判断式比较时 !表示上述结果取反 比如 if [ ! -z $1 ] shell中第一个参数长度不为0

判断式中既可以判断字符 也可以判断数字
  • 1、字符: 判断字符使用 != == -z -n 等操作 (-z 表示 (字符串的长度为零) -n 表示 (字符串的长度是非零的) 这两个可以用于shell中参数的校验)

这里注意一点 在使用if做判断时 比如 if [ $1 == ‘ab’ ] 的时候 如果参数$1没有值得话,会报语法错误,这个时候可以使用 if [[ $1 == ‘ab’ ]] 即这种[[ 的形式 (其实这里我觉得如果写shell脚本的话 可以在传参那里先校验下参数的有无也可)

  • 2、数字: 判断数字可以使用 > < != == 也可以使用 eq ne 等操作(eq 表示相等(equal) ne 表示不等于(unequal))

3、[ [[的区别

区别1: [ 在比较字符串大小的是是使用 > < 的时候需要转移 而[[ 是不需要的 (但是这里我觉得字符串比较大小的很少,几乎没有 而数字的话在这两种里面其实都是合适的,所以感觉其实没有必要使用[[)

注意

这里说下if 中的[] 其实就相当于linux 中的test命令
我们在写shell中的if是需要注意

1、如果碰到判断字符串非空的情况,记得要给变量加上双引号

比如这个示例

a=$1

if [ -n $1 ]; then
  echo 'hello'
fi

我直接执行shell不传参的话,他也可以打印 hello出来,相当于 -n $1 是正确的 相当于参数的字符串长度不是0 这显然是不对的
如果加上"",即"$1", -n “$1” 显示为失败,说明是正确的。

所以我们养成个好习惯 在字符串非空,判定变量要加上双引号。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值