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

例如:求1100相加等多少。

#!/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

例如:计算1100相加的值。

letCount=0

let Sum=0

until [$Count  -gt 100 ]; do

let Sum+=$Count

let Count++

done

echo"Sum is $Sum"