shell流程控制&函数

条件

if-then-elif-then-fi

if的条件部分经常使用test EXPRESSION[ EXPRESSION ]实现,test的用法可以参见test

if 条件1        #if 条件1;then  
then   
    执行语句1
elif 条件2      #elif 条件2;then
then    
    执行语句2  
else
    执行语句3
fi    #条件结束标识,即将if反过来

举个栗子

#!/bin/sh
var="a test string"
if [ '$var' = 'a test string' ];then    #重要的事情:1.[  ]里的表达式两边各有一个空格,=两边也各有一个空格。2. 字符串比较可以使用=或==
    echo 'We find $var'
else
    echo 'We do not know the value of $var'
fi

输出结果:

$ ./shell_if.sh 
We find $var

选择

case-esac

case适合处理多个分支的情况

case $var in
    模式1)
        执行语句1
        ;;
    模式2)
        执行语句2
        ;;
    *)                 #其他情况
        执行语句3
esac #就是case反过来

举个栗子:

#!/bin/sh
var=4
case $var in
    [a-z]|[A-Z])                       #表示a-z或A-Z
        echo "This is a letter"
        ;;
    [0-9])
        echo "This a number"
        ;;
    1[0-9])                                #表示10到19的数字,不能写[10-19]
        echo "This is a number between 10 and 19"
        ;;
    *)
        echo "This is neither a letter nor a number"
        ;;
esac

执行结果:

$ ./Shell_case.sh
This a number

循环

while-do-done

条件满足就执行循环体

while 条件
do
    循环体
done  

until-do-done

不断执行循环体直到条件得到满足

until 条件
do
    循环体
        continue
        break
done

for-do-done

每次循环var都取一个cand的值并执行循环体,循环的执行次数取决于单词表的个数,for会隐含的对变量进行逐个单词的赋值,所以不是用的$var,而是var

for var in cand1 cand2 cand3...
do
    循环体
        continue
        break
done

shell script也接受类C的for循环写法

for ((i=0;i<6;i++)){
    循环体
        continue
        break
}

函数

和其他语言一样,shell脚本的函数也是对功能代码块的封装

定义

ATTENTION:shell函数的定义中的()只是表示这是一个函数的定义,里面不放任何参数

#定义一个函数
fcn_name (){
    ...
        echo $1
        return $A
}

调用

使用函数的时候只要直接使用函数名即可

#无参数
fcn
#有参数
fcn para1 para2
#有返回值
fcn para1 para2
ret=$?

转载于:https://www.cnblogs.com/xiaojiang1025/p/5962424.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值