您的位置:首页 > 运维架构 > Shell

Linux01-BASH的while流程控制41

2014-05-14 12:57 274 查看
一、循环流程控制
1、循环:while, until, for
2、break: 提前退出循环
continue:提前结束本轮循环,而进入下一轮循环;
如:计算100以内奇数的和;
#!/bin/bash
#
declare -i I=0
declare -i SUM=0
while [ $I -lt 100 ];do
let I++
if [ $[$I%2] -eq 0 ];then
continue
fi
SUM=$SUM+$I
done
echo $SUM
如:1000以内的正整数相加,当和大于5000时退出循环;
#!/bin/bash
#
declare -i SUM=0
for I in {1..1000};do
let SUM+=$I
if [ $SUM -gt 5000 ];then
break
fi
done
echo "I is $I."
echo "SUM is $SUM."
3、while的特殊用法
a)while的特殊用法一:
while :;do
STATEMENT
done
如:判断输入内容是否为文件,当触发quit时退出;
#!/bin/bash
#
while :;do
read -p "File path:" FILEPATH
[ $FILEPATH == 'quit' ] && break
if [ -e $FILEPATH ];then
echo "$FILEPATH exists."
else
echo "No$FILEPATH."
fi
done
echo "Quit."
b)while的特殊用法二:
while read LINE; do
STATEMENT
done < /PATH/TO/SOMEFILE
如:/etc/passwd中用户shell为bash的显示用户的用户名;只显示前6个用户;如果ID小于或等于505的则不显示用户;
#!/bin/bash
#
FILE=/etc/passwd
let I=0
while read LINE;do
[ `echo $LINE | awk -F : '{print $3}'` -le 505 ] && continue
[ `echo $LINE | awk -F : '{print $7}'` == '/bin/bash' ] && echo $LINE | awk -F : '{print $1}' && let I++
[ $I -eq 6 ] && break
done < $FILE
写一个脚本:
1、判断一个指定的bash脚本是否有语法错误;如果有错误,则提醒用户键入Q或者q无视错误并退出,其它任何键可以通过vim打开这个指定的脚本;
2、如果用户通过vim打开编辑后保存退出时仍然,则重复第一步中的内容;否则,就正常关闭退出;
参考答案:
#!/bin/bash
#
until bash -n $1 &> /dev/null;do
read -p "Syntax Error,[Q|q] to quit,Any input for editing:" CHOICE
case $CHOICE in
Q|q)
echo "Something wrong,quiting."
exit 5;;
*)
vim + $1;;
esac
done


本文出自 “Jessen Liu的博文” 博客,请务必保留此出处http://zkhylt.blog.51cto.com/3638719/1410999
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: