1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
| # 条件测试 # test <测试表达式> # [ <测试表达式> ] 一般使用 -a 且 -o 或 -gt 大于 -lt 小于 整数 # [[ <测试表达式> ]] 可以使用通配符进行模式匹配 && || > < # (( <测试表达式> )) 可以使用通配符进行模式匹配
# test语法 test -f /root/666.sh && echo true || echo false # 存在/root/666.sh文件返回true 反之false test -f /root/222.sh || touch 222.sh # 文件不存在就创建 test -z "teststring" && echo true || echo false #如果s字符串长度为0 成立返回true 反之false
# [ x ]语法 [ -f /root/666.sh ] && echo true || echo false # 存在/root/666.sh文件且是普通文件返回true 反之false
# 常用文件测试操作符 # -d directory 存在且是目录返回true 反之false # -f file 存在且是普通文件返回true 反之false # -e exist 存在返回true 反之false # -s size 存在且文件大小不为0返回true 反之false # -r read 存在且可读返回true 反之false # -w write 存在且可写返回true 反之false # -x executable 存在且可执行返回true 反之false # -L link 存在且链接文件返回true 反之false # f1 -nt f2 newer than 文件f1比文件f2新返回true 反之false # f1 -ot f2 older than 文件f1比文件f2旧返回true 反之false
# 字符串测试操作符 # -n no zero "字符串" 字符串长度不为0返回true 反之false # -z zero "字符串" 字符串长度为0返回true 反之false # "字符串1" == "字符串2" 相等返回true 反之false # "字符串1" != "字符串2" 不相等返回true 反之false
# 整数比较操作符 # [] test (()) [[]] # -eq ==或= 相等 equal # -ne != 不相等 not equal # -gt > 大于 greater than # -ge >= 大于等于 greater equal # -lt < 小于 less than # -le <= 小于等于 less equal
# 逻辑操作符 # [] test (()) [[]] # -a && 与|且 and # -o || 或 or # ! ! 非 not
echo 1.apache echo 2.nginx echo 3.tomcat read -p "please select op: " op [ "$op" == "1" ] && { echo "select apache" exit 0 } [ "$op" == "2" ] && { echo "select nginx" exit 0 } [ "$op" == "3" ] && { echo "select tomcat" exit 0 } [[ ! "$op" =~ [1-3] ]] &&{ echo "select error only input 1|2|3" exit 1 }
# 总结 # [] test [[]] (()) # 加空格 y y y n # 操作符 -a -o ! 同[] && || ! 同[[]] # 整数比较符 -gt -lt -ge -le -eq 同[] -gt -lt -ge -le -eq # > < >= <= = 同[[]] # 字符串比较符 = == != 同[] 同[] 同[] # 是否支持统配符 n 同[] y 同[]
|