SyMind / learning

路漫漫其修远兮,吾将上下而求索。
10 stars 1 forks source link

Shell 脚本 if 语句 #34

Open SyMind opened 2 years ago

SyMind commented 2 years ago

if 语句的语法

在 shell 脚本中,常见的 if 语句结构如下:

if
    command-list1
then
    command-list2
else
    command-list3
fi

如果 command-list1 中的语句的 exit code 为 0,then 从句执行。如果 exit code 不是 0,else 从句执行。command-list1 可以简单也可以复杂。它可以是一个或多个被 ;&&&|| 或换行分割的命令。

  1. if [ condition ]

[ 是传统 test 命令的别名,[test 是标准 POSIX 工具。所有 POSIX shell 已经将其内置。典型的 test 用法有判断文件是否存在或一个数是否与另一个相等。

  1. if [[ condition ]]

这是 ksh 中对 test 命令升级版,bash、zsh、yash、busybox sh 也支持。它更多的特性,例如它可以使用通配符来判断字符串是否匹配。

  1. if ((condition))

另一个 ksh 的扩展,bash 和 zsh 也支持。用于执行数学表达式。和 [[ ... ]] 一样,这个形式不在 POSIX 标准中。

  1. if (command)

在子 shell 中运行命令。当命令完成,它返回 exit code。

使用这样的子 shell 的一个常见原因是,有的命令会对 shell 环境分配变量或其他更改,以此限制命令的副作用。在子 shell 完成后,这些副作用不会被保留。

  1. if command

执行普通的命令。

常见的 test 命令

参考