由于条件判断和循环跟其他语言都大同小异,学过编程的话很好理解,这里只贴出格式,不具体写用法了。(select菜单会详细讲一下)
条件判断
if条件判断
普通if条件判断:
if 判断条件1; then 条件为真的分支代码 elif 判断条件2; then 条件为真的分支代码 elif 判断条件3; then 条件为真的分支代码 else 以上条件都为假的分支代码 fi
嵌套if条件判断:
if 判断条件1; then 条件为真的分支代码 else if 判断条件2; then 条件为真的分支代码 else 条件为真的分支代码 fi fi ``` ### case条件判断 ```bash case 变量引用 in PAT1) 分支1 ;; PAT2) 分支2 ;; #...省略 *) 默认分支 esac
循环
for循环
普通for循环:
for 变量名 in 列表;do 循环体 don
嵌套for循环:
for 变量名1 in 列表1;do 循环体1 for 变量名2 in 列表2;do 循环体2 done done
while循环
while CONDITION; do 循环体 done
until循环
until CONDITION; do 循环体 done
循环中使用continue和break
continue 结束本次循环,还会进入下一轮循环
break 结束全部循环,不会进入下一轮循环
循环工中使用shift跳过参数列表中的某项
用于处理参数不确定的情况,shift比较好用
while循环的特殊用法(遍历文件的每一行)
while read line; do 循环体 done < /PATH/FROM/SOMEFILE
select 菜单
- select 循环主要用于创建菜单,按数字顺序排列的菜单项将显示在标准错误上,并显示 PS3 提示符,等待用户输入。
- 用户输入菜单列表中的某个数字,执行相应的命令
- 用户输入被保存在内置变量 REPLY 中。
- 可以和case结合使用。
下面举个和select和case结合使用的例子:
PS3="Please choose your food(Input No.): " select food in "exit" "huimian" "juejiangmian" "laomo" "yangroutang" do case $food in "exit") echo Your choice is $REPLY echo "Thanks!" exit ;; "huimian"|"juejiangmian") echo Your choice is $REPLY echo "12 yuan" ;; "laomo") echo Your choice is $REPLY echo "15 yuan" ;; "yangroutang") echo Your choice is $REPLY echo "20 yuan" ;; *) echo "Dont's have this food" ;; esac done
trap 信号捕捉
-
trap '触发指令' 信号
:自定义进程收到系统发出的指定信号后,将执行触发指令 ,而不会执行原操作 -
trap '' 信号
:信号忽略信号的操作 -
trap '-' 信号
:恢复原信号的操作 -
trap -p
:列出自定义信号操作