Linux重新学习--shell script--控制结构

三. shell 中的控制结构

任何编程语言都需要判断和循环两种控制结构,那么这两种结构在shell script中是什么样子的呢,让我们来看一下。


1.判断结构

判断结构分为两种 if 和 switch

1)if

if

then

elif

then

else

fi


既然提到了if, 那么就必须提到AND(&&) 与 OR(||),与C语言一样,这两运算符仍然是短路的,用一个例子说明一下

cmd1 && cmd2:cmd1成功后再去运行cmd2,如果都成功,则为真, 否则,如果cmd1失败了,就直接退出了,cmd2不会运行;

cmd1 || cmd2 :如果cmd1成功了那么cmd2就不用运行了,直接为真,反之,如果cmd1失败了,则运行cmd2,如果都失败了则返回假;


除了AND和OR之外,与if配合使用的还有test命令。

test:

   test命令会返回状态值,现在有一个符号[  ]与test具有相同的功能,使用模式为

   test [expression]     [ [expression] ]

   值得强调的是[  ]中expression两侧必须有空格才行


  test命令主要用来测试文件属性,字符串比较,数字比较,测试文件属性有一个比较长的list,可以参照书本,字符串比较直接使用 = !=即可,而数字的比较则需要用 - 加上字母来表示 -eq -gt -le等。 不管怎么用在使用[]代替test时,一定不要忘记空格。

另外,在test []中,也有AND和OR哦,分别用-a -o来表示,这与[] && []是一样的。

   test命令使用时需要注意的情况:

      test需要参数,所有通常都会把参数用“”引起来, if [ -f“$var” ] right but if [ -f $var ] wrong

      test只能用于整数的比较


2)case

基本模式:

case $1 in

state1)

    ...

   ;;

state2 | state3)

   ...

   ;;

*)

   ...

   exit

esac


case中也允许多个模式匹配只需要将多个匹配用 | 隔开即可。


2.循环

循环有三种

1)for

for的模式如下:

for var in list

do

    。。。

done


2)while

while condition

do

    。。。

done


3)until

until condition

do

    。。。

done


此时,我们讲一下until与while的区别,while中,condition为false时退出,而until则是在condition为true时才退出。


3. break and continue

这两个关键词与C语言中的相同,都是用于控制循环体,但是shell中他们却可以接受参数,用于指定作用到的循环体。


OK,说了这么多,是时候show some samples了。

Example1:

for var in $*

do

    echo $var

done


Example2:

while test "$var" !-_ "quit"

do

    echo $var

    read var

done



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值