linux使用结构化命令,Linux 结构化命令

66b52468c121889b900d4956032f1009.png

8种机械键盘轴体对比

本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?

默认情况下 shell 按照出现的次序来处理 shell 脚本中的每个单独命令。对于顺序操作来说已经足够了,然后许多程序要求在 shell 脚本中的命令间有一些逻辑流控制。有一类命令会基于变量值或者其它变量的结果等条件使脚本跳过或循环执行命令。这样的命令常常称为结构化命令。

结构化命令允许你改变程序执行的顺序,在某些条件下执行一些命令而在其它条件下跳过另一些命令。

使用 if-then 语句1

2

3

4if command

then

command

fi

bash shell 的 if 语句会运行 if 行定义的那个命令。如果该命令的退出状态码是0,位于 then 部分的命令就会被执行,如果是其他值,那么 then 部分的命令就不会被执行,bash shell 会继续执行脚本的下一个命令。在其它编程语言中,if 语句之后的对象是一个等式来测试是 TRUE 还是 FALSE 值。这个地方需要特别注意区别。

if-then-else 语句1

2

3

4

5

6if command

then

commands

else

commands

fi

在 if-then 语句中,不管命令是否成功执行,你都只有一种选择,而 else 语句能让命令执行不成功时有另外一种选择。

嵌套 if1

2

3

4

5

6

7if command1

then

commands

elif command2

then

more commands

fi

有时如果需要检查代码中的多种条件,则可以用 else 的替代版本,即 elif。elif 会通过另一个 if-then 语句来延续 else 部分。可以将多个 elif 语句串起来,形成一个大的 if-then-elif 嵌套组合。

test 命令

上述 if 语句中命令都是普通 shell 命令。可能会有这样的疑问:if-then 语句是否能测试跟命令的退出状态码无关的条件。答案是不能的。test 命令提供了在 if-then 语句中测试不同条件的途径。如果 test 命令中列出的条件成立,test 命令就会退出状态码并返回退出状态码 0,这样 if-then 语句就与其它编程语言中的 if-then 语句以类似的方式工作了。如果条件不成立,test 命令就会退出并返回状态码 1,这样 if-then 语句就会失效。

test 命令的格式非常简单:1test condition

condition 是 test 命令要测试的一系列参数和值。

用在 if-then 语句中时,test 命令看起来是这样的:1

2

3

4if test condition

then

commands

fi

bash shell 提供了另一种在 if-then 语句中申明 test 命令的方法:1

2

3

4if [ condition ]

then

commands

fi

方括号定义了 test 命令中用到的条件。注意,你必须在左括号右侧和右括号左侧各加一个空格,否则会报错。

test 命令可以判断 3 类条件:数值比较

字符串比较

文件比较

复合条件测试

if-then 语句允许使用布尔罗纪夫来组合测试。有两种布尔运算符可用:[ condition1 ] && [ condition2 ];

[ condition1 ] || [ condition2 ]。

第一个布尔运算使用 AND 布尔运算符来组合两个条件,第二个布尔运算使用 OR 布尔运算符来组合两个条件。

if-then 高级特性

bash shell 有两项较新的扩展,提供了可在 if-then 语句中使用的高级特性:用于数学表达式的双尖括号;

用于高级字符串处理功能的双方括号。

双尖括号

双尖括号命令允许你将高级数学表达式放入比较中。test 命令只允许在比较中进行简单的算术操作。双尖括号命令提供了更多的为用过其它编程语言的程序员所熟悉的数学符号。双尖括号的格式如下:1(( expression ))

双方括号

双方括号命令提供了针对字符串比较的高级特性,使用 test 命令中采用的标准字符串比较方法,同时也提供了另一个特性:模式匹配。双方括号的格式如下:1[[ expression ]]

case 命令

case 命令会将指定的变量同不同模式进行比较。如果变量和模式是匹配的,那么 shell 会执行该模式指定的变量。可以通过竖线操作符来分隔模式,在一行列出多个模式。星号会捕获所有跟所列出的模式都不匹配的值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值