shell编程之条件语句和循环语句

网友投稿 265 2022-09-30

shell编程之条件语句和循环语句

shell编程之条件语句和循环语句

条件测试

文件测试与整数测试字符串测试与逻辑测试

if语句if单分支语句if双分支语句if多分支语句

test命令●测试表达式是否成立,若成立返回0,否则返回其他数值格式1: test 条件表达式格式2: [条件表达式]

文件测试[操作符 文件或目录]常用的测试操作符

-d:测试是否为目录(Directory) -e:测试目录或文件是否存在(Exist) -f:测试是否为文件(File) -r:测试当前用户是否有权限读取(Read) -W:测试当前用户是否有权限写入(Write) -x:测试当前用户是否有权限执行(eXcute) -L:测试是否为软连接文件

属性测试补充:

-s FILE #是否存在且非空 -t fd #fd文件描述符是否在某终端已经打开 -N FILE #文件自从上一次被读取之后是否被修改过 -0 FILE #当前有效用户是否为文件属主 -G FILE #当前有效用户是否为文件属组

条件测试

条件测试:判断某需求是否满足,需要由测试机制来实现,专用的测试表达式需要由测试命令辅助完成

条件测试

文件测试与整数测试 字符串测试与逻辑测试if语句 if单分支语句 if双分支语句 if多分支语句 case分支语句

文件测试[操作符 文件或目录]常用的测试操作符[root@localhost ~]# [ -d /media/cdrom ][root@localhost ~]# echo $?0[root@localhost ~]# [ -d /media/cdrom/Server][root@localhost ~]# echo $?1[root@localhost ~]# [ -d /media/cdrom ] && echo "YES"YES

整数值比较[整数1操作符整数2]

常用的测试操作符●-eq:等于(Equal)●-ne:不等于(Not Equal)●-gt:大于(Greater Than)●-lt: 小于(Lesser Than)●-le:小于或等于(Lesser or Equal)●-ge:大于或等于(Greater or Equal)

逻辑测试格式1:[表达式1]操作符[表达式2]...格式2:命令1操作符命令2常用的测试操作符●-a或&&:逻辑与, '而且”的意思●-o或||:逻辑或, "或者”的意思!:逻辑否[root@localhost ~]#[ -d/etc ] && [-r/etc] && echo “You can open it“[root@localhost ~]#[ -d/etc ] II [-d /home ] && echo“ok“

字符串比较

格式1

[字符串1=字符串2][字符串1 !=字符串2 ]

格式2

[ -z字符串]常用的测试操作符

=:字符串内容相同 !=:字符串内容不同,!号表示相反的意思 -z:字符串内容为空

test命令**

测试表达式是否成立,若成立返回0,否则返回其他数值

格式1: test 条件表达式格式2: [条件表达式]

文件测试[操作符 文件或目录]常用的测试操作符-d:测试是否为目录(Directory)

-e:测试目录或文件是否存在(Exist)

-f:测试是否为文件(File)

-r:测试当前用户是否有权限读取(Read)

-W:测试当前用户是否有权限写入(Write)

-x:测试当前用户是否有权限执行(eXcute)

-L:测试是否为符号链接

整数值比较[整数1 操作符 整数2]常用的测试操作符●-eq:等于(Equal)●-ne:不等于(Not Equal)●-gt:大于(Greater Than)●-lt:小于(Lesser Than)●-le:小于或等于(Lesser or Equal)●-ge:大于或等于(Greater or Equal)

常用的测试操作符[root@localhost ~]# who | wc -I7[root@localhost ~]# [ $(who | wc -I) -gt 5] && echo "Too many.”Too many.[root@localhost ~]# [ $(who | wc-I)-ge 10] && echo "> = 10.“

[root@localhost ~]# FreeCC=$(free -m | grep "Mem: " | awk '{print $4}')[root@localhost ~]# [ $FreeCC -|t 1024 ] && echo ${FreeCC}MB275MB

字符串比较格式1:[字符串1=字符串2]或[字符串1==字符串2][字符串1 != 字符串2 ]格式2:[-z 字符串] #检查字符串是否为空(Zero) ,对于未定义或赋予空值的变量将视为空串[-n字符串] #检查是否有字符串存在

常用的测试操作符●=:字符串内容相同●!=:字符串内容不同,!号表示相反的意思●-z:字符串内容为空

[root@localhost ~]# echo $LANGzh_CN.UTF-8[root@localhost ~]# [ $LANG != "en.US"] && echo "Not en.US"Not en.US

[root@localhost ~]# read -P“是否覆盖现有文件(yes/no) ?”ACK是否覆盖现有文件(yes/ro) ? yes[root@localhost ~]#[ $ACK = "yes" ] && echo "覆盖"覆盖

逻辑测试格式1:[表达式1]操作符[表达式2]格式2:命令1操作符命 令2

常用的测试操作符●-a或&&:逻辑与, "而且”的意思●-o或|| :逻辑或,“或者” 的意思●!:逻辑否

case多分支语句[root@localhost~]# cathitkey.sh#!/bin/bashread -p "请输入-个字符,并按Enter键确认:" KEYcase "$KEY" in[a-z]|[A-Z])echo "您输入的是字母.";;[0-9])echo "您输入的是数字.";;*)echo "您输入的是空格、功能键或其他控制字符."esac

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Azure新知识科普 - Blob Storage现已支持SFTP
下一篇:MongoDB启动报错
相关文章

 发表评论

暂时没有评论,来抢沙发吧~