前言
在生活中我们总会做重复的事情,程序中使用循环模拟做重复的事情,任何语言都有循环语句,在shell编程中,支持3种循环的语法,分别是while、for、for in!
while的两种语法
1、放在同一行
while condition; do
command
done
while与do放在同一行,使用;隔开,while每次会判断condition的退出状态码,如果为0,则执行循环体的代码
2、不放在同一行
while condition
do
command
done
while与do不在同一行,此时不需要;
单行写法
while true; do echo 'hello world'; done
使用;隔开即可
只判断退出状态码
while true; do
echo 'hello world';
done
由于true这个命令的退出状态码永远为0,所以循环将一直进行下去。只要有退出状态码的命令都可以放在while的后面,它们可以是
1、函数
2、一个命令
3、另一个脚本程序
等等,只要有退出状态码,则可作为条件
多个条件,只认最后一个条件
while true; false; do
echo 'hello world';
done
同一行,只认最后一个条件的退出状态码
while总结
1、几乎与if的标准一样,条件就是退出状态码,所以test命令也经常作为条件来使用
2、while的使用率还挺多的,请学会它吧
for in语法
1、放在同一行
for item in hello world; do
echo $item
done
2、不放在同一行
for item in hello world
do
echo $item
done
列表
在for in语法中,in后面跟着是列表,且列表以空白字符(空格、换行、制表)分隔的单词组成的列表,循环中,列表中的单词会一个一个被遍历,所以我们经常可以利用命令替换的返回值,进行遍历,比如遍历当前工作目录下的每一个文件
for file in $(ls);do
echo $file
done
写在一行
for item in hello world;do echo $item; done
利用文件名替换
for i in *.png; do
echo $i
done
for in总结
1、记住一条,in后面的是由空白字符分隔的单词列表(注意:IFS可以修改默认的分隔符)
2、双引号与单引号会使单词分隔功能失效,造成无法生成需要的列表
for语法
类C语言的创新是计算机高级语言的鼻祖,shell编程同样也学习C语言的for语法
for (( i=0; i<5; i=i+1 )); do
echo $i
done
语法呢,双括号,哈哈,躲不掉!!在双圆括号中,访问变量值,连美元符都可以省去了!!
无限循环
for ((;;))
do
echo hello world
sleep 5
done
最后的总结
1、shell编程中,支持while、for in、for,3种循环方式
2、其实还有另外一种until,由于不常用,本文不再提及
3、无论什么语言,遵守其标准语法,学习起来事半功倍!!!!