结果显示:my
下面用个read和case的例子结束本部分的学习:
#--交互式备份,恢复程序
echo \输入要备份文件所在目录:\\c\ read WORKDIR if [ !-d $WORKDIR ] then
echo \Sorry,$WORKDIR is not a directory\ exit 1 fi
cd $WORKDIR echo \输入选择:\ echo _
echo \1.恢复到 $WORKDIR\ echo \2.备份 $WORKDIR\ echo \0.退出\ echo echo \\\c\ read CHOICE case \$CHOICE\ in 1)echo \恢复中... ...\ cpio -i < /dev/mnt0;; 2)echo \备份中... ...\ ls | cpio -o > /dev/mnt0;; 0)exit 1 *)exit 1 esac
if [ $? -ne 0 ] then
echo \程序运行中出现错误!\ else
echo \操作成功!\ fi
在上面代码中,\*\定义了其他模式下不匹配时的默认操作。
循环语句
前面介绍的程序和所学的语句都是从头到尾成一条主线下来,或是成分支结构,在日常管理UNIX的过程中,经常要重复的做一些操作,处理批量的问题,这就涉及到了循环结构,同高级语言相似,UNIX的Shell也提供了强大的循环处理语句。
Bsh语言中有三种循环语句-while循环、until循环、for循环,下面通过具体的例子分别介绍这三种结构。
While循环
在while循环语句中,当某一条件为真时,执行指定的命令。语句的结构如下:
while command do
command command … … done
示例代码如下:
#测试while循环小程序 x_t=1
while [ $x_t -lt 5 ] do
mm=` expr $x_t \\* $int ` #注意\\\\的作用 echo \$mm\
x_t=` expr $x_t + 1 ` #注意expr的用法 done
echo \THE WHILE IS END!\\n\
程序的执行结果如下:
1 4 9 16
THE WHILE IS END
在上述程序中,当变量x_t的值小于5的时候,执行while循环中的语句。在第五次循环时, [ $x_t-lt5]命令返回非零值,于是程序执行done后面的代码。
现在利用while循环,可以改进我们早些时候用的备份数据的例子,当用户指定的目录备份完毕后,使用while循环使程序执行一次可以备份多个用户指定的目录。代码如下:
echo \欢迎使用备份小程序\
ANS=Y
while [ $ANS = Y -o $ANS = y ] do
echo _ #读目录名
echo \输入要备份的目录名:\\c\ read DIR
if [ ! -d $DIR ] then
echo \$DIR不是一个目录!\ exit 1 fi cd $DIR echo \请选择:\ echo _
echo \1 恢复数据到 $DIR\ echo \2 备份$DIR的数据\ echo
echo \请选择:\\c\ read CHOICE case \$CHOICE\ in
1) echo \恢复中… …\
cpio -i 2) echo \备份中… …\
cpio -o >/dev/rmt0;; *) echo \选择无效\ esac
if [ $? -ne 0 ] then
echo \cpio执行过程中出现问题\ exit 2 fi
echo \继续别的目录吗?(Y/y)\\c\ read ANS done
在程序开始,我们给变量ANS符值为Y,根据whlie的判断条件,程序进入while循环,执行do-done中的语句,每次循环都要求用户输入ANS的值用来判断是否进行下次重复执行do-done中的语句。如果用户输入的条件不满足while语句条件,循环结束,程序执行done后面的语句。 Until语句
While语句中,只要某条件为真,则重复执行循环代码,until语句正好同while相反,该语句使循环代码重复执行,直到遇到某一条件为真才停止。
Until语句的结构如下: until command do
command command … … done
可以用until语句替换上面备份程序的while语句,完成同样的功能:
until [ $ANS != Y -a $ANS != y ]
for 循环
在介绍for循环之前,我们要学个非常有用的unix命令:shift。我们知道,对于位置变量或命令行参数,其个数必须是确定的,或者当Shell程序不知道其个数时,可以把所有参数一起赋值给变量$*。若用户要求Shell在不知道位置变量个数的情况下,还能逐个的把参数一一处理,也就
相关推荐: