case语句
下面是要学习的多重选择模式,由于本人是干c语言的,所以经常和C语言中的语法比较。Case和switch语法基本是一样的。
结构如下:
Case 值 in
模式1)命令1
命令2
…..
;;
模式2)命令3
…..
;;
Esec
举一个简单的例子:
根据脚本输入的参数(限定第一个参数)打印不同的说明,或命令
#!/bin/sh
PARPAM=$1
if [ "$PARPAM" = "" ]
then
echo "no parpam"
exit 1
fi
case $PARPAM in
1) echo "param is : $1"
;;
2) echo "param is : $1"
;;
*) ls -l
;;
esac
case 还有个用处就是屏蔽你不想要的,比如你只对0-9数字中9操作,则0-8可以case中什么也不做,1);;2);;类似这样。
For循环
Shell的for循环好像要比C语言的强大,基本格式如下:
For 变量名 in 列表
Do
命令1
命令2
……
Done
变量名和类表有很多,比如ls中出现的各个文件集合就可以看作列表,变量名就是每个文件
比如:
for loop in 1 2 3 4 5
do
echo $loop
done
或者
for loop in `ls`
do
echo “$loop”
done
当然for循环可以嵌套
for 变量名1 in 列表1
do
for 变量名2 in 列表2
do
命令1
done
done
while循环
格式:
while 命令
do
命令1
命令2
.。。。。
done
当命令成立时,运行1,2.。。。。。知道命令不成立,和C语言一致。
很好懂,给个例子。
文件 test.txt内容为:
jim spike:1:A
xiao li: 2: B
li ming: 3:C
程序:
BACK=IFS
echo "$IFS"
IFS=:
echo "$IFS"
while read NAME NUM WORD
do
echo -e "$NAME/t $NUM/t $WORD"
done < test.txt
IFS=$BACK
#IFS表示分割符,默认是空格,由于我的txt是冒号分割所以改了,然后恢复
当然还有跳出循环的break和continue的用法和C语言一样,不再重复。
另外 冒号(:)表示什么也不做,比如else : 表示else语句后什么也不做
菜单显示可以不用好多echo语句比如
1.one
2. two
3. three
可以这样
cat << MYDATA
1. one
2. two
3. three
MYDATA
就能显示了