Shell 判断

打印 上一主题 下一主题

主题 642|帖子 642|积分 1926

Shell 判断


文章目录





1. if

1.1 if

  1. if else
  2. if
  3. if 语句语法格式:
  4. if condition
  5. then
  6.     command1
  7.     command2
  8.     ...
  9.     commandN
  10. fi
复制代码
写成一行(适用于终端命令提示符):
  1. if [ $(ps -ef | grep -c "ssh") -gt 1 ]; then echo "true"; fi
复制代码
末尾的fi就是if倒过来拼写,后面还会遇到类似的。
1.2 if else

  1. if else
  2. if else 语法格式:
  3. if condition
  4. then
  5.     command1
  6.     command2
  7.     ...
  8.     commandN
  9. else
  10.     command
  11. fi
复制代码
1.3 if else-if else

if else-if else 语法格式:
  1. if condition1
  2. then
  3.     command1
  4. elif condition2
  5. then
  6.     command2
  7. else
  8.     commandN
  9. fi
复制代码
以下实例判断两个变量是否相等:
  1. a=10
  2. b=20
  3. if [ $a == $b ]
  4. then
  5.    echo "a 等于 b"
  6. elif [ $a -gt $b ]
  7. then
  8.    echo "a 大于 b"
  9. elif [ $a -lt $b ]
  10. then
  11.    echo "a 小于 b"
  12. else
  13.    echo "没有符合的条件"
  14. fi
  15. 输出结果:
  16. a 小于 b
复制代码
1.4 if test

if else语句经常与test命令结合使用,如下所示:
  1. num1=$[2*3]
  2. num2=$[1+5]
  3. if test $[num1] -eq $[num2]
  4. then
  5.     echo '两个数字相等!'
  6. else
  7.     echo '两个数字不相等!'
  8. fi
  9. 输出结果:
  10. 两个数字相等!
复制代码
1.5 if 文件判断

基本的意义[ -a FILE]如果FILE存在,则为真。[ -b FILE]如果FILE存在并且是块特殊FILE,则为真。[ -c FILE]如果FILE存在并且是字符特殊FILE,则为真。[ -d FILE]如果FILE存在并且是一个目录,则为真。[ -e FILE]如果FILE存在,则为真。[ -f FILE]如果FILE存在并且是常规FILE,则为真。[ -g FILE]如果FILE存在且其 SGID 位已设置,则为真。[ -h FILE]如果FILE存在并且是符号链接,则为真。[ -k FILE]如果FILE存在并且其粘性位已设置,则为真。[ -p FILE]如果FILE存在并且是命名管道 (FIFO),则为真。[ -r FILE]如果FILE存在且可读,则为真。[ -s FILE]如果FILE存在且大小大于零,则为真。[ -t FD ]如果FILE描述符FD打开并指向终端,则为真。[ -u FILE]如果FILE存在且其 SUID(设置用户 ID)位已设置,则为真。[ -w FILE]如果FILE存在且可写,则为真。[ -x FILE]如果FILE存在且可执行,则为真。[ -O FILE]如果FILE存在并且归有效用户 ID 所有,则为真。[ -G FILE]如果FILE存在并且归有效组 ID 所有,则为真。[ -L FILE]如果FILE存在并且是符号链接,则为真。[ -N FILE]如果FILE存在并且自上次读取后已被修改,则为真。[ -S FILE]如果FILE存在并且是一个套接字,则为真。[FILE1- nt FILE 2 ]如果FILE1的更改比FILE2更新,或者FILE1存在而FILE2不存在,则为真。[FILE1 -otFILE 2 ]如果FILE1早于FILE2,或者FILE2存在而FILE1不存在,则为真。[FILE1 -efFILE 2 ]如果FILE1和FILE2引用相同的设备和 inode 号,则为真。[ -o选项名称]如果启用了 shell 选项“OPTIONNAME”,则为真。[-z字符串]如果“STRING”为零,则长度为真。[-n字符串] 或 [字符串]如果“STRING”的长度不为零,则为真。[ 字符串 1 == 字符串 2 ]如果字符串相等,则为真。 为了严格遵守 POSIX ,可以使用“=”代替“==” 。[ 字符串 1 != 字符串 2 ]如果字符串不相等,则为真。[ 字符串 1 < 字符串 2 ]如果“STRING1”在当前语言环境中按字典顺序排在“STRING2 ”之前,则为真。[ 字符串 1 > 字符串 2 ]如果“STRING1”在当前语言环境中按字典顺序排在“STRING2 ”之后,则为真。[ ARG1 开 ARG2 ]“OP”是-eq、-ne、-lt、-le、-gt或-ge之一。如果"ARG1"分别等于、不等于、小于、小于或等于、大于或大于或等于"ARG2" ,则这些算术二元运算符返回真。 “ARG1”和“ARG2”是整数。2. case

  1. name=`basename $0 .sh`
  2. case $1 in
  3. s|start)
  4.         echo "start..."
  5.         ;;
  6. stop)
  7.         echo "stop ..."
  8.         ;;
  9. reload)
  10.         echo "reload..."
  11.         ;;
  12. *)
  13.         echo "Usage: $name [start|stop|reload]"
  14.         exit 1
  15.         ;;
  16. esac
  17. exit 0
复制代码
3. 组合表达式

OperationEffect[ ! EXPR ]如果EXPR为假,则为真。.[ ( EXPR ) ]返回EXPR的值。这可用于覆盖运算符的正常优先级.[ EXPR1 -a EXPR2 ]如果EXPR1和EXPR2都为真,则为真。[ EXPR1 -o EXPR2 ]如果EXPR1或EXPR2为真,则为真。参考:


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

花瓣小跑

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表