Skip to content

流程控制

条件语句(if-then-else)

语法

bash
if [ 条件 ]; then
  # 条件成立时执行的代码块
elif [ 其他条件 ]; then
  # 其他条件成立时执行的代码块
else
  # 条件都不成立时执行的代码块
fi

示例:

bash
var=10

if [ "$var" -lt 10 ]; then
    echo "var 变量等于 10"
else
    echo "var 变量不等于 10"
fi

常见条件判断

bash
[ -e filename ] # 如果 filename 存在,则为真
[ -d filename ] # 如果 filename 为目录,则为真
[ -f filename ] # 如果 filename 为常规文件,则为真
[ -L filename ] # 如果 filename 为符号链接,则为真
[ -r filename ] # 如果 filename 可读,则为真
[ -w filename ] # 如果 filename 可写,则为真
[ -x filename ] # 如果 filename 可执行,则为真
[ -s filename ] # 如果文件长度不为0,则为真
[ -h filename ] # 如果文件是软链接,则为真

示例:

bash
# 如果 /opt/test/aaa 文件夹不存在,创建文件夹
if [ ! -d "/opt/test/aaa" ]; then
  mkdir -p /opt/test/aaa
fi

for 循环

bash
for item in 列表; do
  # 循环体,可以使用$item引用当前元素
done

示例:

bash
fruits=("apple" "banana" "cherry")

for fruit in "${fruits[@]}"; do
  echo "I like $fruit."
done

while 循环

bash
while [ 条件 ]; do
  # 循环体,条件成立时执行
done

示例:

bash
count=1

while [ $count -le 5 ]; do
  echo "Count: $count"
  count=$((count+1))
done

until 循环

bash
until [ 条件 ]; do
  # 循环体,条件不成立时执行
done

示例:

bash
count=1

until [ $count -gt 5 ]; do
  echo "Count: $count"
  count=$((count+1))
done

选择语句(case)

bash
case 变量 in
  模式1)
    # 模式1匹配时执行的代码块
    ;;
  模式2)
    # 模式2匹配时执行的代码块
    ;;
  *)
    # 所有模式都不匹配时执行的代码块
    ;;
esac

示例:

bash
fruit="apple"

case $fruit in
  "apple")
    echo "It's an apple."
    ;;
  "banana")
    echo "It's a banana."
    ;;
  *)
    echo "It's something else."
    ;;
esac

基于 MIT 许可发布