Shell中的条件测试和循环语句

时间:2021-08-19 13:21:39

1.条件测试:test或[

如果测试结果为真,则该命令的Exit Status为0,如果测试结果为假,则命令的Exit Status为0

Shell中的条件测试和循环语句

运行结果:
Shell中的条件测试和循环语句

带与、或、非的测试命令
[ ! EXPR ] : EXPR可以是上表中的任意一种测试条件,!表示逻辑反
[ EXPR1 -a EXPR2 ] : EXPR1和EXPR2可以是上表中的任意一种测试条件,-a表示逻辑 与
[ EXPR1 -o EXPR2 ] :EXPR1和EXPR2可以是上表中的任意一种测试条件,-o表示逻辑 或

2. if/then/elif/else/fi

Shell中用用if、then、elif、else、fi这几几条命令实现分支支控制

Shell中的条件测试和循环语句

运行结果:

Shell中的条件测试和循环语句

Shell还提供了&&和||语法,&&相当于“if...then...”,而||相当于“if not...then...”。

-a和-o仅用于在测试表达式中连接两个测试条件

Shell中的条件测试和循环语句

3、case/esac

Shell脚本的case可以匹配字符串和Wildcard,每个匹配分支可以有若干 条命令,末尾必须以;;结束,执行行时找到第一个匹配的分支支并执行行相应的命令,然后直接跳 到esac之后
Shell中的条件测试和循环语句

运行结果:

Shell中的条件测试和循环语句

循环语句

4、for/do/done

如下例子:

Shell中的条件测试和循环语句

运行结果:

Shell中的条件测试和循环语句

5、while/do/done

如下例子:

Shell中的条件测试和循环语句

运行结果:

Shell中的条件测试和循环语句

6. 位置参数和特殊变量
有很多特殊变量是被Shell自动赋值的,以下是常用的位置参数和特殊变量
$0                   相当于C语言言main函数的argv[0]
$1、$2...          C语言言main函数 的argv[1]、argv[2]...
以上这些称为位置参数(Positional Parameter)
$#                    相当于C语言言main函数的argc - 1
$@                  表示参数列表"$1" "$2" ...,例如可以用用在for循环中的in后面。
$?                   上一条命令的Exit Status