专业的编程技术博客社区

网站首页 > 博客文章 正文

shell 循环分支总结(shell foreach循环)

baijin 2024-09-04 02:13:45 博客文章 6 ℃ 0 评论

for循环

for arg in [list]

do

...

done

  • 每个[list]中的元素都可能包含多个参数

for planet in "Mercury 36" "Venus 67" "Earth 93" "Mars 142" "Jupiter 483"

do

set $planet; echo $1,$2;

done

  • 将一个变量放在for循环的[list]位置上

planets="Mercury Venus Earth Mars Jupiter"

for p in ${planets}

do

echo ${p}

done

  • 在for循环的[list]中有通配符 (*和?), 那么将会发生通配(globbing), 也就是文件名扩展

#列出/etc/下所有文件

for p in /etc/*

do

echo ${p}

done

  • 在for循环中省略in [list]部分,从命令行传递给脚本参数

while循环

while [condition]

do

...

done

  • c风格while循环

LIMIT=10

a=1

while [ "$a" -le $LIMIT ]

do

echo -n "$a "

let "a+=1"

done

更简单写法

((a = 1)) # 双圆括号允许赋值两边的空格, 就像C语言一样.

while (( a <= LIMIT )) # 双圆括号, 变量前边没有"#34;

do

echo -n "$a "

((a += 1))

done

  • 多条件while循环

while echo "prevar = $pre"; pre=$var1; [ "$var1" != end ];

do

echo "input var #1 (end to exit) "

read var1

echo "var #1 = $var1"

done

until

这个结构在循环的顶部判断条件, 并且如果条件一直为false, 那么就一直循环下去. (与while循环相反)

until [condition-is-true]

do

...

done

循环控制

  • break命令用来跳出循环

break命令可以带一个参数. 一个不带参数的break命令只能退出最内层的循环, 而break N可以退出N层循环

  • continue命令只会跳过本次循环

一个不带参数的continue命令只会去掉本次循环的剩余代码. 而continue N将会把N层循环的剩余代码都去掉, 但是循环的次数不变

case (in) / esac

case "$variable" in

$condition1" ) ...;;

$condition2" ) ...;;

esac

select

select variable [in list]

do

...

break

done

提示用户输入选择的内容(比如放在变量列表中). 注意: select命令使用PS3提示符, 默认为(#?)

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表