shell编程 - 循环语句

1. for in 语句

  • 基本格式
for var in list
do
  commands
done
  • 代码示例
list="test1 test2 test3"
for value in $list
do
  echo $value
done
  • 设置列表的分隔符
# 保存原始的分隔符设置
ifs=$IFS  

# 设置风格符为换行符,逗号,以及冒号
IFS=$'\n',: 

list="test1,test2,test3"
for value in $list
do
  echo $value
done

# 恢复默认设置
IFS=$ifs 

IFS默认将空格,制表符,换行符作为分隔符

  • 从命令读取值
cat ./test.txt
this is test1
this is test2
this is test3
file="./test.txt"
ifs=$IFS
IFS=$'\n'
for value in $(cat $file)
do
  echo $value
done
IFS=$ifs
  • 使用通配符读取目录
for file in ./*
do
  if [ -f "$file" ]
  then
    echo "$file"
  fi
done

2. for 语句

  • 基本格式
for (( variable assignment; condition; iteration process ))
  • 代码示例
for (( i=1; i <= 5; i++ ))
do
  echo "$i"
done

3. while 语句

  • 基本格式
while test command
do
  other commands
done
  • 代码示例
var1=5
while [ $var1 -gt 0 ]
do
  echo $var1
  var1=$[ $var1 - 1 ]
done

4. until 语句

  • 基本格式
until test commands
do
  other commands
done

until 的条件测试返回非0的时候才会执行循环体中命令,与while刚好相反

  • 代码示例
var1=5
until [ $var1 -eq 0 ]
do
  echo $var1
  var1=$[ $var1 - 1]
done

5. break 语句

list="test1 test2 test3"
for value in $list
do
  if [ "$value" = 'test2' ]
  then
    break
  fi
  echo $value
done

默认跳出当前循环, breadk 2 则跳出双层循环的外层循环

6. continue 语句

list="test1 test2 test3"
for value in $list
do
  if [ "$value" = 'test2' ]
  then
    continue
  fi
  echo $value
done

默认终止某次循环中的其他命令,continue 2则终止外层循环中的其他命令,但不终止循环

posted @   箫笛  阅读(84)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
点击右上角即可分享
微信分享提示