控制流之case/for/while

case语句

 

       下面是要学习的多重选择模式,由于本人是干c语言的,所以经常和C语言中的语法比较。Caseswitch语法基本是一样的。

       结构如下:

              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

当命令成立时,运行12.。。。。。知道命令不成立,和C语言一致。

很好懂,给个例子。

文件 test.txt内容为:

jim spike1A

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

就能显示了

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值