[Shell详解-7]:循环语句

Shell语法详解目录

1. for…in…do…done

命令格式

for var in val1 val2 val3
do
    语句1
    语句2
    ...
done

示例1
输出数组{a 2 cc},每个元素一行

for i in a 2 cc
do
    echo $i
done

示例2
输出当前路径下的所有文件名,每个文件名一行。

for file in `ls`
do
    echo $file
done

示例3
输出1-10。
seq命令用于生成两个整数之间的所有数字。

for i in $(seq 1 10)
do
    echo $i
done

示例4
使用{1..10} 或者 {a..z}

for i in {
    
    a..z}
do
    echo $i
done

2. while…do…done循环

条件为假时结束循环。
命令格式

while condition
do
    语句1
    语句2
    ...
done

示例,文件结束符为Ctrl+d,输入文件结束符后read指令返回false

while read name
do
    echo $name
done
#! /bin/bash

a=3

while [ $a -lt 5 ]
do
    echo $a
    a=`expr $a + 1`
done

3. until…do…done循环

当条件为真时结束。
命令格式

until condition
do
    语句1
    语句2
    ...
done

示例,当用户输入yes或者YES时结束,否则一直等待读入。

until [ "${word}" == "yes" ] || [ "${word}" == "YES" ]
do
    read -p "Please input yes/YES to stop this program: " word
done

4. break命令

跳出当前一层循环,注意与C/C++不同的是:break不能跳出case语句。

while read name
do
    for ((i=1;i<=10;i++))
    do
        case $i in
            8)
                break
                ;;
            *)
                echo $i
                ;;
        esac
    done
done

该示例每读入非EOF的字符串,会输出一遍1-7。
该程序可以输入Ctrl+d文件结束符来结束,也可以直接用Ctrl+c杀掉该进程。

5. continue命令

跳出当前循环。

for ((i=1;i<=10;i++))
do
    if [ `expr $i % 2` -eq 0 ]
    then
        continue
    fi
    echo $i
done

猜你喜欢

转载自blog.csdn.net/weixin_52341477/article/details/127601486