顺德网站建设教程,盐城seo 优化,仓库出入库管理系统,快速学习网站制作文章目录 shell中的流控制if语句if语句if-then语句if-then-else 语句 test命令数值比较字符串比较文件比较case语句 欢迎访问个人网络日志#x1f339;#x1f339;知行空间#x1f339;#x1f339; shell中的流控制if语句
简单的脚本可以只包含顺序执行的命令#xff0… 文章目录 shell中的流控制if语句if语句if-then语句if-then-else 语句 test命令数值比较字符串比较文件比较case语句 欢迎访问个人网络日志知行空间 shell中的流控制if语句
简单的脚本可以只包含顺序执行的命令但结构化命令允许根据条件改变程序执行的顺序。
if语句
if-then语句
if-then语句格式如下:
if command
thencommands
fi在其他编程语言中 if 语句之后的对象是一个等式这个等式的求值结果为 TRUE 或 FALSE 。bash shell的 if 语句会运行 if 后面的那个命令。如果该命令的退出状态码是0位于 then 部分的命令就会被执行。
#!/bin/bash
if pwd
thenecho pwd worked
fi输出
# robxx-rob:~$ ./test1
/home/rob
pwd workedif-then-else 语句
格式
if command
thencommands
elsecommands
fi示例
vbin
if grep $v pwd
thenecho pwd worked
elseecho cannot find $v
fi结果
robxx-rob:~$ ./test1
# grep: pwd: 没有那个文件或目录
# cannot find binif还可以嵌套多层
if command1
then
command set 1
elif command2
then
command set 2
elif command3
then
command set 3
elif command4
then
command set 4
fitest命令
bash shell if语句的条件是command如果要使用常规的数值/字符串比较条件需要使用test命令。
使用test命令的if-then-fi语句:
if test condition
then
commands
fi如果不写 test 命令的condition部分它会以非零的退出状态码退出并执行 else语句块。
加入条件时test 命令会测试该条件。
bash shell中 test命令的另外一种写法是使用[ condition ] 中括号第一个方括号之后和第二个方括号之前必须加上一个空格 否则就会报错。
if中条件判断的几个条件
判断变量是否有值if test ${variable}数值比较字符串比较文件比较
数值比较
test命令的数值比较功能:
比较描述n1 -eq n2检查 n1 是否与 n2 相等n1 -ge n2检查 n1 是否大于或等于 n2n1 -gt n2检查 n1 是否大于 n2n1 -le n2检查 n1 是否小于或等于 n2n1 -lt n2检查 n1 是否小于 n2n1 -ne n2检查 n1 是否不等于 n2
#!/bin/bash
if test 100 -le 145; thenecho 100 is smaller than 145
fiv12
if [ $v -eq 12 ];thenecho value is 12
fi
bash shell只能处理整数不能使用浮点数作为判断条件。
字符串比较
bash shell条件测试还允许比较字符串值比较字符串比较烦琐。
比较描述str1 str2检查 str1 是否和 str2 相同str1 ! str2检查 str1 是否和 str2 不同str1 str2检查 str1 是否比 str2 小str1 str2检查 str1 是否比 str2 大-n str1检查 str1 的长度是否非0-z str1检查 str1 的长度是否为0
在bash sehll中比较运算符需要使用转义否则会被当成重定向运算符。 s1val
s2thi# 升成thi的文件
if [ $s1 $s2 ];
thenecho new file $v2 has been created.
fiif [ $s1 \ $s2 ];
thenecho $s1 is greater than $s2.
fi
比较测试中使用的是标准的ASCII顺序根据每个字符的ASCII数值来决定排序结果。在比较测试中大写字母被认为是小于小写字母的。
文件比较
测试Linux文件系统上文件和目录的状态。
命令描述-d file检查 file 是否存在并是一个目录-e file检查 file 是否存在-f file检查 file 是否存在并是一个文件-r file检查 file 是否存在并可读-s file检查 file 是否存在并非空-w file检查 file 是否存在并可写-x file检查 file 是否存在并可执行-O file检查 file 是否存在并属当前用户所有-G file检查 file 是否存在并且默认组与当前用户相同file1 -nt file2检查 file1 是否比 file2 新file1 -ot file2检查 file1 是否比 file2 旧
if-then 语句允许你使用布尔逻辑来组合测试有两种布尔运算符可用:
[ condition1 ] [ condition2 ][ condition1 ] || [ condition2 ]
case语句
在尝试计算一个变量的值在一组可能的值中寻找特定值可能不得不写出很长的 if-then-else语句。case 命 令会采用列表格式来检查单个变量的多个值。
case variable inpattern1 | pattern2) commands1;;pattern3) commands2;;*) default commands;;
esac一个例子
c1
case $c in
1 | 2) echo 1;;
3) echo 23;;
esac欢迎访问个人网络日志知行空间