编程语句

本文详细介绍了Linux脚本中常见的流程控制结构,包括if语句的单分支、双分支和多分支,case语句的使用,以及for、while和until循环的实现方式。此外,还讲解了循环控制命令continue和break以及shift命令在遍历参数列表中的应用。文章最后提到了select循环用于创建菜单,并展示了如何通过trap命令捕获和处理信号。

流程控制
过程式编程语言:
循环执行

run-parts  批量运行目录里所有脚本


选择执行
if语句,if语句可嵌套:
1.单分支
if 判断条件;then
         条件为真的分支代码
fi

2.双分支
if 判断条件;then
         条件为真的分支代码
else
         条件为假的分支代码
fi

3.多分支
if 判断条件1;then
        条件为真的分支代码
elif 判断条件2;then
        条件为真的分支代码
elif 判断条件3;then
        条件为真的分支代码
else
        以上条件都为假的分支代码
fi
逐条进行判断,第一次遇为“真”条件时,执行其分支,而后结束整个if语句
 


case语句:
case 变量引用 in
PAT1)                             case支持glob风格的通配符:
     分支1                             *:任意长度任意字符
     ;;                                ?:任意单个字符
PAT2)                                  []:指定范围内的任意单个字符
     分支2                              a|b:a或b
     ;;
...
*)
     默认分支
esac


for循环:
第一种
for 变量名 in 列表;do
    循环体
done
依次将列表中的元素赋值给“变量名”;每次赋值后即执行一次循环体;直到列表中的元素耗尽,循环结束


第二种
for ((控制变量初始化;条件判断表达式;控制变量的修正表达式))
do
    循环体
done
控制变量初始化:仅在运行到循环代码段时执行一次
控制变量的修正表达式:每轮循环结束会先进行控制变量修正运算,而后再做条件判断
 


while循环:
while CONDITION;do
    循环体
done

CONDITION:循环控制条件;进入循环之前,先做一次判断;每一次循环之后会再次做判断;条件“true”,
则执行一次循环;直到条件测试状态为“false”终止循环
因此:CONDITION一般应该有循环控制变量;而此变量的值会在循环体不断地被修正
进入条件:CONDITION为true
退出条件:CONDITION为false

while循环特殊用法:
while read line;do
    循环体
done < /data/FILE
依次读取/data/FILE文件中的每一行,且将行赋值给变量line


until循环:
until CONDITION;do
    循环体
done

进入条件:CONDITION为false
退出条件:CONDITION为true


循环控制:
continue和break命令
用于循环体中
continue [#]:提前结束第#层的本轮循环,而直接进入下一轮判断;最内层为第一层
while CONITION1;do
    CMD1
    ...
    if CONITION2;then
        continue
    fi
    CMDn
    ...
done

break [#]:提前结束第#层循环,最内层为第1层
while CONITION1;do
    CMD1
    ...
    if CONITION2;then
        break
    fi
    CMDn
    ...
done


shift [#]
用于将参量列表list左移指定次数,缺省为左移一次
参量列表list一旦移动,最左端的那个参数就从列表中删除。while循环遍历位置参量列表时,常用到shift
例子:
until [-z "$1"];do
    useradd "$1"
    echo "user $1 is creat"
    shift
done
echo "finsh"


创建死循环
while true;do
    循环体
done

unti false;do
    循环体
done


select循环菜单
select 变量名 in list
    do
        循环体命令
done
select循环主要用于创建菜单,按数字顺序排列的菜单项将显示在标准输出上,并显示PS3提示符,等待用户输入。
用户输入菜单列表的某个数字,执行相应的命令
用户输入被保存在内置变量REPLY中
select是个无限循环,因此要记住用break命令退出循环,或用exit命令终止脚本。也可以按ctrl+c退出循环
select经常和case联合使用
与for循环类似,可以省略in list,此时使用位置参量


信号捕捉trap:
trap '触发指令' 信号  
    自定义进程收到系统发出的指定信号后,将执行触发指令,而不会执行原操作
trap '' 信号
    忽略信号操作
trap '-' 信号
    恢复原信号的操作
trap -p 
    列出自定义信号操作
trap -l   =kill -l
    查看信号列表

15信号可以捕抓,9信号不能捕抓


例子:
1、判断年龄
read -p "Plesae input your age: " AGE
[[ "$AGE" =~ ^[0-9]+$ ]] || { echo Age is no digit; exit; }
if [ "$AGE" -lt 18 ] ;then
        echo "good study"
elif [ "$AGE" -ge 18 -a "$AGE" -lt 60 ] ;then
        echo "good work"
elif [ "$AGE" -ge 60 -a "$AGE" -lt 150 ] ;then
        echo "good luck"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

金牌收租佬

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值