1、和其他语言不一样,sh 的流程控制不可为空。如果 else 分支没有语句执行,就不要写这个 else。
2、if else 流程
(1)if 语句语法格式:
if condition then command1 command2 ... commandN fi
写成一行(适用于终端命令提示符):
if [ $(ps -ef | grep -c "ssh") -gt 1 ]; then echo "true"; fi
末尾的 fi 就是 if 倒过来拼写,表示 if 结束。
(2)if else 语法格式:
if condition then command1 command2 ... commandN else command fi
(3)if else-if else 语法格式:
if condition1 then command1 elif condition2 then command2 else commandN fi
#以下实例判断两个变量是否相等: a=10 b=20 if [ $a == $b ] then echo "a 等于 b" elif [ $a -gt $b ] then echo "a 大于 b" elif [ $a -lt $b ] then echo "a 小于 b" else echo "没有符合的条件" fi #输出结果:a 小于 b
3、for 循环 —— for循环一般格式为:
for var in item1 item2 ... itemN do command1 command2 ... commandN done
写成一行:
for var in item1 item2 ... itemN; do command1; command2… done;
当变量值在列表里,for 循环即执行一次所有命令,使用变量名获取列表中的当前取值。命令可为任何有效的 shell 命令和语句。in 列表可以包含替换、字符串和文件名。
in列表是可选的,如果不用它,for循环使用命令行的位置参数。
#例如,顺序输出当前列表中的数字: for loop in 1 2 3 4 5 do echo "The value is: $loop" done #顺序输出字符串中的字符: #!/bin/bash for str in This is a string do echo $str done