读书人

Linux-Shell编程-case,for,while,until

发布时间: 2012-11-23 22:54:33 作者: rapoo

Linux--Shell编程-case,for,while,until
多分支
case 变量名/表达式 in
value1|value2)
commands1
;;
value3)
commands2
;;
value4)
command3
;;
[*)
defaults commands
;;]
esac


    作用:计算变量名/表达式的值,然后与下面的 value 支匹配,与哪个匹配到(相等),就
       执行其下的commands ,如果所有的都没匹配到,
       有*就执行defaults commands 段
      
if 多分支
     if [ condition1 ]
then
commands1
elif [ condition2 ]
then
commands2
elif [ condition3 ]
then
commands3
elif [ condition4 ]
then
commands4
else
commands
fi

 


for 遍历循环
格式:
for 变量名 in value1 value2 value3 ... valueN
do
commands
done


   如果遍历值很多可以
for 变量名 in $(seq 起始值 步长 终值)
do
commands
done


作用:变量在 value1 到 valueN 之间遍历,每次取一个值,每取一个值执行一次循环体
      值取完循环也就结束了
  
  
例:用for 求 1+2+3+...+50

例:用for 遍历求 /etc/下有多少目录
   
for i in /etc/*
do

done


C式for 循环
格式:for ((i=0;i<=100;i++))
do
commands

done

while 循环
  格式: while [ condition ]
do
commands
done

例:n=1
while [ $n -le 5 ]
do
echo -n "*"
n=$[$n+1]
done


打印 *****


例:打印 1-10 内的偶数

n=2
while [ $n -le 10 ]
do
echo $n
n=$[$n+2]
done


n=1
while [ $n -le 10 ]
do
if [ $n%2 -eq 0 ]
then
echo $n
fi
n=$[$n+1]
done

       



     例:求 20 内能同时被2和3整除的数之和
s=0
n=1
while [ $n -le 20 ]
do
if [[ $n%3 -eq 0 && $n%2 -eq 0 ]]
then
s=$[$s+$n]
fi
let n+=1
done
echo "s=$s"


until 循环
格式:
until [ condition ]
do

commands;

done

作用:condition 是否成立,不成立,执行循环体,成立里止。
      

例:打印 1-10 内的偶数
 
n=1
until [ $n -gt 10 ]


例:通过循环创建三个用户,用户名从键盘输入,密码与用户名相同
   
   改密: echo $user | passwd $user --stdin

 
死循环
一般来讲死循环是要避免的,但在有些情况下,可能会刻意使用死循环,
    构建死循环:
while true
do


      [
if [ condition ]
then
break --在必要的时候给程序留个出口
fi
]

[sleep 3] --在有些情况下,要程序停止时间
done


例:写个程序监控vsftpd 是否正常运行,如果服务器停止了的话,启起来
while true
do
if ! ....
then
service vsftpd start
fi

sleep 3
done













打印 *****

读书人网 >编程

热点推荐