编程技术文章分享与教程

网站首页 > 技术文章 正文

Linux,shell四种循环结构,for、while、until、select代码案例

hmc789 2024-11-27 14:49:22 技术文章 2 ℃

Shell循环结构

循环结构

程序中使用循环就是模拟做重复的事情,一般情况下,语言都有循环语句,shell支持4种循环:for、while、until和select。

break和continue指令

break是跳出当前循环,continue是跳出本次循环;

break [数字]、break [数字]:数字是跳出层级,循环嵌套时,默认只跳出内循环,用数字指定跳出第几层循环。

代码案例

for循环

#!/bin/bash

# for循环1
for ((i=0;i<6;i++))
do
  echo "i=$i"
done

# for循环2
for item in 0 1 2 3 4 5
do
  echo "item=$item"
done

# for循环3
for item2 in {0..5}
do
  echo "item2=$item2"
done

# for循环4
array=(0 1 2 3 4 5)
for j in ${array[@]}
do
  echo "j=$j"
done

# for循环5
for k in $(seq -w 5)
do
  echo "k=$k"
done

# for循环6
# 读取文件
for e in `cat file`
do
  echo "e=$e"
done

while循环

#!/bin/bash

# while循环1
i=0
while [ $i -le 6 ]
do
  echo "i=$i"
  ((i++))
done

# while循环2
j=0
while (( j<6 ))
do
  echo "j=$j"
  ((j++))
done

# while循环3
# file为文件文件,读取文件
cat file | while read line
do
  echo "line=$line"
done

# while循环4
# file为文件文件,读取文件
while read line2
do
  echo "line2=$line2"
done < file

until循环

#!/bin/bash

# until循环1
i=0
until [ $i -ge 6 ]
do
  echo "i=$i"
  ((i++))
done

# until循环2
j=0
until (( j > 6 ))
do
  echo "j=$j"
  ((j++))
done

select循环

#!/bin/bash

# select循环(用户选择)
select check in one two three four quit
do
  case $check in
    one)
      echo "您选的为:$check"
      ;;
    two)
      echo "您选的为:$check"
      ;;
    quit)
      break
      ;;
    *)
      echo -e "\033[31;1m选择错误,请重新选择.\033[0m"
  esac
done

break和continue

#!/bin/bash

# 嵌套循环,break语句(跳出第1层循环,内部的for)
for ((i=0;i<5;i++))
do
  for ((j=0;j<5;j++))
  do
    if (( i==2 && j==2 ));then
      break 1
    fi
    echo "1. (i=$i,j=$j)"
  done
done

# 嵌套循环,break语句(跳出第2层循环,外部的for)
for ((i=0;i<5;i++))
do
  for ((j=0;j<5;j++))
  do
    if (( i==2 && j==2 ));then
      break 2
    fi
    echo "2. (i=$i,j=$j)"
  done
done

# 嵌套循环,continue语句(跳出第1层循环,内部的for)
for ((i=0;i<5;i++))
do
  for ((j=0;j<5;j++))
  do
    if (( i==2 && j==2 ));then
      continue 1
    fi
    echo "3. (i=$i,j=$j)"
  done
done

# 嵌套循环,continue语句(跳出第2层循环,外部的for)
for ((i=0;i<5;i++))
do
  for ((j=0;j<5;j++))
  do
    if (( i==2 && j==2 ));then
      continue 2
    fi
    echo "4. (i=$i,j=$j)"
  done
done
标签列表
最新留言