Shell 编程 条件语句

本篇主要写一些shell脚本条件语句的使用。


条件测试

  • test 条件表达式
  • [ 条件表达式 ]

文件测试

-d:测试是否为目录(Directory)。
-e:测试文件或目录是否存在(Exist)。
-f:测试是否为文件(File)。
-r:测试当前用户是否有权限读取(Read)。
-w:测试当前用户是否有权限写入(Write)。
-x:测试是否设置有可执行权限(Excute)。
-nt:判断文件A是否比文件B新。
-ot:判断文件A是否比文件B旧。
-ef:判断两个文件是否为同一个文件,用来判断两个文件是否指向同一个inode

[[email protected] ~]# test -d /etc/ && echo $?
0
[[email protected] ~]# ls test.txt
ls: cannot access test.txt: No such file or directory
[[email protected] ~]# [ ! -e test.txt ] && touch test.txt
[[email protected] ~]# ls test.txt
test.txt

整数值比较

  • [ 整数1 操作符 整数2 ]

-eq:等于(Equal)
-ne:不等于(Not Equal)
-gt:大于(Greater Than)
-lt:小于(Lesser Than)
-le:小于等于(Lesser or Equal)
-ge:大于等于(Greater or Equal)

[[email protected] ~]# history | wc -l
294
[[email protected] ~]# [ `history | wc -l` -gt 100 ] && echo "Too many" || echo "Too few"
Too many
[[email protected] ~]# history -c
[[email protected] ~]# [ `history | wc -l` -gt 100 ] && echo "Too many" || echo "Too few"
Too few

字符串比较

=:第一个字符串与第二个字符串相同
!=:第一个字符串与第二个字符串不相同
-z:检查字符串是否为空,对于未定义或赋予空值的变量视为空串

逻辑测试

&&:逻辑与,表示而且,使用test命令测试时,可改为-a
||:逻辑或,表示或者使用test命令测试时,可改为-o
!:逻辑否,表示

if 单分支

[[email protected] ~]# vim score.sh
#!/bin/bash
read -p "请输入成绩:" score
if [ $score -ge 60 ]
then
  echo "成绩合格"
fi
[[email protected] ~]# chmod +x score.sh
[[email protected] ~]# ./score.sh
请输入成绩:80
成绩合格
[[email protected] ~]# ./score.sh
请输入成绩:40

if 双分支

[[email protected] ~]# vim score.sh
#!/bin/bash
read -p "请输入成绩:" score
if [ $score -ge 60 ]
then
  echo "成绩合格"
else
  echo "成绩不合格"
fi
[[email protected] ~]# ./score.sh
请输入成绩:80
成绩合格
[[email protected] ~]# ./score.sh
请输入成绩:40
成绩不合格

if 多分支

[[email protected] ~]# vim score.sh
#!/bin/bash
read -p "请输入成绩:" score
if [ $score -ge 90 ]
then
  echo "成绩优秀"
elif [ $score -ge 60 ]
then
  echo "成绩合格"
else
  echo "成绩不合格"
fi
[[email protected] ~]# ./score.sh
请输入成绩:90
成绩优秀
[[email protected] ~]# ./score.sh
请输入成绩:80
成绩合格
[[email protected] ~]# ./score.sh
请输入成绩:40
成绩不合格
[[email protected] ~]# vim run.sh

if 嵌套

#!/bin/bash
read -p "请输入时间:" time
if [ $time -le 10 ]
then
  echo "您已进入决赛"
  read -p "请输入性别(man/woman)" sex
  if [ $sex = "man" ]
  then
    echo "您被分到男子组"
  else
    echo "您被分到女子组"
  fi
else
  echo "抱歉,您被淘汰"
fi
[[email protected] ~]# chmod +x run.sh
[[email protected] ~]# ./run.sh
请输入时间:9
您已进入决赛
请输入性别(man/woman)man
您被分到男子组
[[email protected] ~]# ./run.sh
请输入时间:9
您已进入决赛
请输入性别(man/woman)woman
您被分到女子组
[[email protected] ~]# ./run.sh
请输入时间:11
抱歉,您被淘汰

原文地址:https://www.cnblogs.com/llife/p/11633407.html

时间: 2024-09-30 15:28:45

Shell 编程 条件语句的相关文章

Shell 编程 case语句

本篇主要写一些shell脚本条件语句的使用. 条件测试 test 条件表达式 [ 条件表达式 ] 文件测试 -d:测试是否为目录(Directory). -e:测试文件或目录是否存在(Exist). -f:测试是否为文件(File). -r:测试当前用户是否有权限读取(Read). -w:测试当前用户是否有权限写入(Write). -x:测试是否设置有可执行权限(Excute). -nt:判断文件A是否比文件B新. -ot:判断文件A是否比文件B旧. -ef:判断两个文件是否为同一个文件,用来判

shell编程---条件判断

一.shell编程之条件判断 1.整数测试 a.条件测试的表达式 [ expression ] [[ expression ]] test expression b.整数比较 -eq: 测试两个整数是否相等:比如 $A -eq $B -ne: 测试两个整数是否不等:不等,为真:相等,为假: -gt: 测试一个数是否大于另一个数:大于,为真:否则,为假: -lt: 测试一个数是否小于另一个数:小于,为真:否则,为假: -ge: 大于或等于 -le:小于或等于 c.命令的间逻辑关系 逻辑与: &&am

【转载】shell编程——if语句 if -z -n -f -eq -ne -lt

shell编程中条件表达式的使用 if  条件then Commandelse Commandfi                              别忘了这个结尾 If语句忘了结尾fitest.sh: line 14: syntax error: unexpected end of fi if 的三种条件表达式 ifcommandthen if 函数then  命令执行成功,等于返回0 (比如grep ,找到匹配)执行失败,返回非0 (grep,没找到匹配) if [ expressi

Shell编程——条件判断(2)

Shell编程之条件判断 条件测试操作 test命令 测试特定的表达式是否成立,当条件成立时,测试语句的返回值为0,否则为其他数值 格式1:test 条件表达式 格式2:[ 条件表达式 ] 文件测试[ 操作符 文件或目录 ]常用的测试操作符-d:测试是否为目录-e:测试目录或文件是否存在-f:测试是否为文件-r:测试当前用户是否有权限读取-w:测试当前用户是否有权限写入-x:测试当前用户是否有权限执行整数值比较[ 整数1 操作符 整数2 ]常用的测试操作符-eq:等于-ne:不等于-gt:大于-

Linux Shell编程 条件判断语法

if条件判断语句 单分支 if 条件语句 语法格式: if [条件判断式];then 程序 fi 或者 if [条件判断式] then 程序 fi 在使用单分支 if 条件查询时需要注意几点: if 语句使用 fi 结尾,和一般语言使用大括号结尾不同. [条件判断式] 就是使用 test 命令判断,所以中括号和条件判断式之间必须有空格. then 后面跟符合条件之后执行的程序.可以放在 [] 之后,用";"分隔:也可以换行写入,就不需要";": 示例:通过脚本判断根

Shell 编程 循环语句

本篇主要写一些shell脚本循环语句的使用. for 循环 指定次数 #!/bin/bash for ((i=1;i<=10;i++)) do echo $i done [[email protected] ~]# vim num.sh [[email protected] ~]# chmod +x num.sh [[email protected] ~]# ./num.sh 1 2 3 4 5 6 7 8 9 10 遍历循环 #!/bin/bash TMP=$(cat username.txt

Shell 编程 until语句

本篇主要写一些shell脚本until语句的使用. 计算1-50的和 #!/bin/bash i=0 s=0 until [ $i -eq 51 ];do let s+=i;let i++ done echo $s [[email protected] ~]# vim sum.sh [[email protected] ~]# chmod +x sum.sh [[email protected] ~]# ./sum.sh 1275 为指定用户发送在线消息 #!/bin/bash username

shell编程——if语句 if -z -n -f -eq -ne -lt

if  条件then Commandelse Commandfi                              别忘了这个结尾 If语句忘了结尾fitest.sh: line 14: syntax error: unexpected end of fi if 的三种条件表达式 ifcommandthen if 函数then  命令执行成功,等于返回0 (比如grep ,找到匹配)执行失败,返回非0 (grep,没找到匹配) if [ expression_r_r_r  ]then 

shell编程 条件判断式----利用 case ..... esac 判断

条件判断式----利用 case ..... esac 判断 case  $变量名称 in   <==关键词为 case ,还有变量前有钱字号 "第一个变量内容")   <==每个变量内容建议用双引号括起来,关键词则为小括号 ) 程序段 ;;            <==每个类别结尾使用两个连续的分号来处理! "第二个变量内容") 程序段 ;; *)                  <==最后一个变量内容都会用 * 来代表所有其它值 不包含