shell编程之流程控制

分支语句

单分支语句

复制代码
if [ condition ];then
    命令行...
fi

示例:

复制代码
#!/bin/bash
if [ -f "file.txt" ]; then
    echo "文件存在"
fi

双分支语句

复制代码
if [ condition ];then
    命令行...
else
    命令行...
fi

示例:

复制代码
#!/bin/bash
if [ -f "file.txt" ]; then
    echo "文件存在"
else
    echo "文件不存在"
fi

多分支语句

复制代码
if [ condition ];then
    命令行...
elif [ condition ];then
    命令行...
else
    命令行...
fi

示例:

复制代码
#!/bin/bash
if [ -f "file.txt" ]; then
    echo "文件存在"
elif [ -d "/etc" ]; then
    echo "目录存在"
else
    echo "文件和目录都不存在"
fi

case语句

类似于分支语句,case一般用于实现有多种选择的脚本(菜单选择)

语法:

复制代码
case $变量 in
    模式1)
        # 匹配模式1时执行
        ;;
    模式2)
        # 匹配模式2时执行
        ;;
    *)
        # 默认情况
        ;;
esac

示例:

复制代码
#!/bin/bash
read -p "输入 yes/no: " answer
case $answer in
    yes|Yes|YES)
        echo "你选择了是"
        ;;
    no|No|NO)
        echo "你选择了否"
        ;;
    *)
        echo "无效输入"
        ;;
esac

循环语句

for循环

语法:

复制代码
for 变量 in 列表; do
    # 循环体
done

示例:

复制代码
#!/bin/bash
for num in {1..10}
do
  echo ${num}
done

while循环

语法:

复制代码
while [ condition ]
do
    命令
done

死循环语法

复制代码
while [ condition ]
do
    命令
done

示例:使用while循环输出1..10

复制代码
#!/bin/bash
num=1
while [ ${num} -le 10 ]
do
    echo ${num}
    let num++
done

示例:使用while循环计算1-100的和

复制代码
#!/bin/bash
num=1
count=0
while [ ${num} -le 100 ]
do
    let count+=num
    let num++
done

echo ${count}

while读取文件

语法:

复制代码
while read 变量
do
    命令/内容
done <文件路径

示例:

复制代码
#!/bin/bash
filename=/etc/passwd

while read line
do
    echo ${line}
done <${filename}

循环控制语句

break

break用于终止当前循环,不会继续运行剩下的循环

示例:

复制代码
#!/bin/bash
for i in {1..10}; do
    if [ $i -eq 5 ]; then
        break
    fi
    echo "当前值: $i"
done

continue

continue用于终止本次循环,进入下一次循环

示例:

复制代码
#!/bin/bash
for i in {1..5}; do
    if [ $i -eq 3 ]; then
        continue
    fi
    echo "当前值: $i"
done