IF 语句

Bash 脚本入门

Alex Scriven

Data Scientist

基本 IF 语句

Bash 中基本的 IF 语句结构如下:

if [ CONDITION ]; then

# SOME CODE
else # SOME OTHER CODE
fi

两点提示:

  • 方括号与内部条件元素之间要有空格(第一行)
  • 右括号后加分号 ];
Bash 脚本入门

IF 与字符串

我们可以在 IF 语句中进行基本的字符串比较:

x="Queen"

if [ $x == "King" ]; then
echo "$x is a King!"
else echo "$x is not a King!" fi
Queen is not a King!

也可以使用 != 表示"不等于"

Bash 脚本入门

算术 IF(方式 1)

算术 IF 语句可使用双圆括号结构:

x=10

if (($x > 5)); then echo "$x is more than 5!" fi
10 is more than 5!
Bash 脚本入门

算术 IF(方式 2)

算术 IF 也可用方括号配合算术标志(而非 >, <, =, != 等):

  • -eq 等于
  • -ne 不等于
  • -lt 小于
  • -le 小于等于
  • -gt 大于
  • -ge 大于等于
Bash 脚本入门

算术 IF 示例

这里用方括号重写上例:

x=10
if [ $x -gt 5 ]; then
    echo "$x is more than 5!"
fi
10 is more than 5!
Bash 脚本入门

其他 Bash 条件标志

Bash 还提供多种与文件相关的标志,例如:

  • -e 文件存在
  • -s 文件存在且大小大于 0
  • -r 文件存在且可读
  • -w 文件存在且可写

以及更多:

Bash 脚本入门

在 Bash 中使用 AND 与 OR

 

在 Bash 中组合条件(AND)或使用 OR,使用以下符号:

  • && 表示 AND
  • || 表示 OR
Bash 脚本入门

多重条件

在 Bash 中可以如下串联条件:

x=10
if [ $x -gt 5 ] && [ $x -lt 11 ]; then
    echo "$x is more than 5 and less than 11!"
fi

或使用双中括号写法:

x=10
if [[ $x -gt 5 && $x -lt 11 ]]; then
    echo "$x is more than 5 and less than 11!"
fi
Bash 脚本入门

IF 与命令行程序

您也可以在条件中直接使用许多命令行程序,去掉方括号

例如,若文件 words.txt 内含"Hello World!":

if grep -q Hello words.txt; then
    echo "Hello is inside!"
fi
Hello is inside!
Bash 脚本入门

IF 与嵌套 shell

也可以在条件中调用"嵌套 shell"。

让我们改写上例,结果相同:

if $(grep -q Hello words.txt); then
    echo "Hello is inside!"
fi
Hello is inside!
Bash 脚本入门

Passons à la pratique !

Bash 脚本入门

Preparing Video For Download...