一.if else语句
1.语法
if 语法:
if 条件
then
命令
fi
可以将 if 语句放到一行
if 条件; then 命令; fi
if else 语法:
if 条件
then
命令
else
命令
fi
if elif else 语法:
if 条件1
then
命令1
elif 条件2
then
命令2
elif 条件3
then
命令3
...
else
命令N
fi
演示:
单行写法:
if ((1==1)); then echo "成立";else echo "不成立";fi;
多行写法:
2.if 条件判断句的退出状态
命令的退出状态:
linux任何命令的执行都会有一个退出状态,无论是内置命令还是外部文件命令,还是自定义的shell函数,当它退出(运行结束)时,都会返回一个比较小的整数值给调用(使用)它的程序,这就是命令的退出状态。
大多数命令状态0
代表成功,非0代表失败。
也有特殊命令,比如diff命令用于比较两个文件的不同,对于没有差别的文件返回0
,对于找到差别的文件返回1
,对无效文件名返回2
。
shell中有多种方式取得命令的退出状态,其中$?
是最常见的一种。
演示:
二.shell内置命令:test
1.目标
- 理解test命令对整数比较测试
- 理解test命令对字符串比较测试
- 使用test命令对文件比较测试
2.介绍
shell中的test命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试。
功能与[]
一样。
3.整数比较测试
语法:
if test 数字1 options 数字2
then
...
fi
演示
# 1等于1,返回状态码0,表示正确
test 1 -eq 1;echo $?
# 0
# 1大于2,返回状态码1,表示错误
test 1 -gt 2;echo $?
# 1
4.字符串比较测试
语法
演示
test "a" == "b";echo $?
# 1
test "a" \> "b";echo $?
# 1
test -n "a";echo $?
# 0
5.文件比较测试
语法
演示
test -e demo.log;echo $?
# 1
test 1 -eq 1 -a 1 \> 2;echo $?
# 1