使用 for 循环遍历命令的执行结果
for 循环的语法
for 参数 in 列表
do 执行的命令
done 封闭一个循环
使用反引号或 $() 方式执行命令,命名的结果当作列表进行处理
使用 for 循环遍历变量和文件的内容
echo {1..9}Eg:
touch a.mp3 b.mp3 c.mp3
for filename in `ls *.mp3`
do
mv $flename $(basename $filename .mp3).mp4
done
C语言风格的 for 命令
for(( 变量初始化 ; 循环判断条件 ; 变量变化 ))
do
循环执行的命令
done
eg:
for (( i=1 ; i<= 10; i++ ))
do
echo $i
done
while 循环
while test测试条件是否成立
do
命令
done
eg:
a=1
while [ $a -lt 10 ]
do
echo $a
((a++))
done
死循环
while test测试一直成立
do
命令
done
eg:
while :
do
echo always
done
until 循环
until 循环与 while 循环相反,循环测试为假时,执行循环,为真时循环停止a=1
until [ $a -gt 6 ]
do
echo $a
((a++))
done
循环的使用
循环和循环可以嵌套
循环中可以嵌套判断,反过来也可以嵌套
eg:
for sc_name in /etc/profile.d/*.sh
do
if [ -x $sc_name ] ;then
echo $sc_name
fi
done
循环可以使用break和continue语句在循环中退出
eg:
for num in {1..9}
do
if [ $num -eq 5 ] ;then
break
fi
echo $num
done
break 和 continue 语句
breakfor num in {1..9}
do
if [ $num -eq 5 ] ;then
break
fi
echo $num
done
continuefor num in {1..9}
do
if [ $num -eq 5 ] ;then
break
fi
echo $num
done
使用循环对命令行参数的处理
命令刚参数可以使用 $1 $2 .. ${10} .. ${n} 进行读取
$0 代表脚本名称
$* 和 $@ 代表所有位置参数
$# 代表位置参数的数量
eg1:for pos in $*
do
if [ "$pos" = "help" ]; then
echo $pos $pos
fi
done
shift 参数左移
while [ $# -ge 1 ]
do
if [ "$1" = "help" ]; then
echo $1 $1
fi
shift
done