case语句是多分支的if-elif-elif...then语句的另一种表现形式,相比之下,case语句更加简洁明了,具体的语法是:
case $Var in
str1)
commands
;;
str2)
commands
;;
str3)
commands
;;
*)
commands
;;
esac
例如:如果用户输入的是m就显示内存利用率,d就显示磁盘利用率,q退出,注意:右小括号)中的表现形式支持选择 | 和 [ ]。
#!/bin/bash
cat << EOF
m|M) show memoryusages;
[dD]) show disk usages;
quit|q|Q) quit
EOF
read -p "Yourchoice: " Choice
case $Choice in
m|M)
free-m ;;
d|D)
df-lh ;;
q|Q)
echo "Quit..."
;;
*)
echo"Invalid input."
;;
esac
while 循环
当条件满足时循环,不满足即退出,语法如下:
while condition ; do
command
done
例如:求1到100相加等多少。
#!/bin/bash
#
letCount=0
let Sum=0
while[ $Count -le 100 ]; do
let Sum+=$Count
let Count++
done
echo "Sum is $Sum"
while另一种常用情形是读取文件的每一行,然后进行处理
while read LINE ; do
command
.........
done </path/to/file
练习:如果用户的ID号为偶数,则显示其名称和shell;对所有用户执行此操作;
whileread LINE ; do
Uid=`echo "$LINE" | cut -d: -f3`
if [ $[$Uid%2] -eq 0 ] ; then
echo "$LINE"| cut -d: -f1,7
fi
done </etc/passwd
until 循环
until表示的意思跟while刚好相反,当条件不满足时循环,条件满足即退出。
untilcondition ; do
commands
done
例如:计算1到100相加的值。
letCount=0
let Sum=0
until [$Count -gt 100 ]; do
let Sum+=$Count
let Count++
done
echo"Sum is $Sum"