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

Shell控制结构

2017-03-15 19:49 106 查看

shell控制结构

if

语句格式:

#简单的if语句
if condition
then
statements
fi

#带有else的if语句
if condition
then
statements
else
statements
fi

#带有elif也就是else if的if语句
if condition
then
statements
elif condition
then
statements
else
statements
fi


如果你想简化,不写那么些行,可以把
then
放到
if
elif
里:

if condition;then
statements
elif condition;then
statements
fi


下面是一个例子:

#!/bin/bash

echo "你叫小李吗?敲Y是,敲N不是"
read answer
if [ "$answer" = "Y" ];then
echo "是啊,我是小李"
elif [ "$answer" = "N" ];then
echo "不是,你找错人了"
fi

sleep 2
exit 0


注意:

因为
answer
可能为空,所以需要用双引号括起,否则如果
answer
是空,会解析成
if [ = "Y"]
,结果bash会报test出现语法错误。

[  ]
等价于
test
,也就是说
[ "$answer" = "Y" ]
等价于
test "$answer" = "Y"


for

语句格式:

#python里的链表,in右边是链表
for item in item1 item2 item3[...]
do
#下面的语句可以引用item变量
statements
done


举个例子

for name in "小王" "小李" "小张"
do
echo $name "来了,快跑!"
done


#该脚本会找出当前目录所有后缀为sh的文件,并显示数量

#count用于计数
count=0
for file in $(ls *.sh);do
echo $file
count=$(($count+1))
done
echo $count


三步当作两步走

cd /var/log


ls -il


可以并作一个语句:
cd /var/log;ls -il


所以

for item in item1 [...];do


....


while

语句格式:

while condition
do
statments
done


举个例子

# 1到100的所有自然数的和
total=0
num=1
while [ $num -le 100 ];do
total=$(($total+$num))
num=$(($num+1))
done


提示:

$(())
用于简单的数学算法,优于使用expr,因为expr会启用另一个shell,效率低。

until

类似于while,只不过当条件不成立时才进入循环,条件成立时终止循环。

举个栗子:

#当有simon用户登陆时,才打铃、提示欢迎信息
until who|grep 'simon'>/dev/null;do
sleep 60#60秒检查一次
done

echo \\a#打铃
echo "哈,欢迎你"#欢迎信息
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  shell