02.循环和语句

1. if语句

1.1 单分支

if [ 条件 ]
  then
    命令
fi

说明:如果满足条件,则执行命令,否则不执行该if语句。

1.2 双分支

if [ 条件 ]
  then
    命令1
  else
    命令2
fi

如果满足条件,则执行命令1,否则执行命令2。

1.3 多分支

if [ 条件1 ]
  then
    命令1
  elif [ 条件2 ]
    命令2
……
  else
    命令n
fi
  • 如果满足条件1,则执行命令1;如果满足条件2,则执行命令2;否则执行命令n。
  • elif 可以写多个

2. for循环

2.1 shell风格

2.1.1 语法

for 变量名 in 列表
  do
    循环体
done

in后边写一个列表即可,不必加括号、引号之类。方法如下:

2.1.2 直接列出列表内容

for i in 1 2 3

for i in [1,2,3]

2.1.3 连续的列表

for i in [1..10]

2.1.4 执行命令创建的列表

  • 语法
for i in $(命令)
  • 利用seq命令
for i in $(seq 200) #从1~200
for i in $(seq 100 200) #从100~200
  • 利用cat/ls等命令
for i in $(cat 文件名)

2.2 C语言风格

for ((i=0;i<=100;i++))
  do
    循环体
done

2.3 命令行执行for循环

  • 语法
# for 条件;do 循环体;done

说明:为了方便,可以把循环题用括号扩起来。

  • 条件
    shell风格和C语言风格都可用

  • 示例

# for((i=0;i<=10;i++));do echo $i;done

# for i in $(seq 10);do echo $i ;done

# for i in `cat 1.txt`;do echo $i;done

2.4 awk的for循环

说明:每行打印10遍

# awk '{for(i=0;i<=10;i++){print $0}}' 1.txt

3. while循环

3.1 语法

while 条件
  do
    循环体
done

3.2 示例

while [ $i -gt 10 ]
while 0

4. case语句

4.1 语法

case $变量 in
  "值1")
    命令1-1;
    命令1-2;;
  "值2")
    命令2;;
……
  *)
    命令n;;
esac

4.2 值与正则

  • 值表示一个连续范围:[1-9]
  • 值表示连个其中一个:A|B
case i in
  "[1-5]")
    echo 'cat';;
  "6|7")
    echo 'dog';;
……
  *)
    命令n;;
esac

5. 循环控制

  • exit
    退出整个程序

  • break
    结束当前循环,跳出本层循环

  • break1
    跳出一层循环,break2 跳出两层循环。

  • continue
    跳出本循环剩余代码

  • next 下一行


你可能感兴趣的:(02.循环和语句)