2022-06-27-Shell系列07丨 shell流程控制

一.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;

多行写法:

20230208231013

2.if 条件判断句的退出状态

命令的退出状态:

linux任何命令的执行都会有一个退出状态,无论是内置命令还是外部文件命令,还是自定义的shell函数,当它退出(运行结束)时,都会返回一个比较小的整数值给调用(使用)它的程序,这就是命令的退出状态。

大多数命令状态0代表成功,非0代表失败。

也有特殊命令,比如diff命令用于比较两个文件的不同,对于没有差别的文件返回0,对于找到差别的文件返回1,对无效文件名返回2

shell中有多种方式取得命令的退出状态,其中$?是最常见的一种。

演示:

20230208233256

二.shell内置命令:test

1.目标

  • 理解test命令对整数比较测试
  • 理解test命令对字符串比较测试
  • 使用test命令对文件比较测试

2.介绍

shell中的test命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试。

功能与[]一样。

3.整数比较测试

语法:

if test 数字1 options 数字2
then
...
fi

20230209230029

演示

# 1等于1,返回状态码0,表示正确
test 1 -eq 1;echo $?
# 0 

# 1大于2,返回状态码1,表示错误
test 1 -gt 2;echo $?
# 1

4.字符串比较测试

语法

20230209232041

演示

test "a" == "b";echo $?
# 1

test "a" \> "b";echo $?
# 1

test -n "a";echo $?
# 0

5.文件比较测试

语法

20230209233119

演示

test -e demo.log;echo $? 
# 1

test 1 -eq 1 -a 1 \> 2;echo $?
# 1

三.case语句

四.while语句

五.until语句

六.for语句