shell - 选择循环
一、条件判断
-
基本语法
命令格式 1 test condition 2 [ condition ] 注意:从condition前后要有空格 -
判断条件种类 - condition
2.1 字符串之间相比较
相等 不相等 = != 2.2 两个整数之间比较
等于 不等于 小于 小于等于 大于 大于等于 -eq -ne -lt -le -gt -ge equal not equal less than less equal greater than greater equal 2.3 文件权限判断
有读的权限 有写的权限 有执行的权限 -r -w -x 2.4 文件类型判断
文件存在 文件存在且是一个常规的文件 文件存在且是一个目录 -e -f -d 2.5 多条件判断:三目运算
&& 表示前一条命令执行成功,才执行后一条命令
|| 表示上一条命令执行失败,才执行下一条命令
-
实例测试
二、if
-
单分支
if [ condition ];then // 程序块 fi
或
if [ condition ] then // 程序块 fi
-
多分支
if [ 条件判断式 ] then // 程序 elif [ 条件判断式 ] then // 程序 else // 程序 fi
-
语法注意
if与条件判断之间要有空格
三、case
-
基本语法
case $变量名 in "值 1") // 如果变量的值等于值 1,则执行程序 1 ;; "值 2") // 如果变量的值等于值 2,则执行程序 2 ;; // …省略其他分支… *) 如果变量的值都不是以上的值,则执行此程序 ;; esac
-
注意事项
① case 行尾必须为单词“in”,
② 每一个模式匹配必须以右括号“)”结束。
③ 双分号“;;”表示命令序列结束,相当于 java 中的 break。
④ 最后的“*)”表示默认模式,相当于 java中的default
三、for
-
基本语法1
for (( 初始值;循环控制条件;变量变化 )) do // 程序 done
-
基本语法2,类似增强for循环
for 变量 in 值 1 值 2 值 3… do /程序 done
对于in的使用,要注意区分 $* 与 $@,用双引号引住后, $* 是一个整体 ; $@ 是一个数组
-
实例测试
frotest.sh
#!/bin/bash echo "----------" for i in {1..100} do sum=$[$sum+$i] done echo $sum echo "----$@------" for j in "$@" do echo "输出 $j" done echo "----$*------" for k in "$*" do echo "输出 $k" done
四、while
-
基本语法
while [ 条件判断式 ] do // 程序 done