test 选项 对象 等价于[ ]
-d:测试是否为目录(Directory)
-e:测试目录或文件是否存在(Exist)
-a:测试目录或文件是否存在(Exist)
-f:测试是否为文件(File)
-r:测试当前用户是否有权限读取(Read)
-w:测试当前用户是否有权限写入(Write)
-x:测试当前用户是否有权限执行(eXcute)
test -r 判断当前用户是否有条件读取
linux
test
[ ]
[[ ]]加强版的单个[ ]可以支持正则表达式和通配符
比较整数的数值
[ 整数1 -操作符 整数2 ] 公式
-eq:第一个数等于(Equal)第二个数
-ne:第一个数不等于(Not Equal)第二个数
-gt:第一个数大于(Greater Than)第二个数
-lt:第一个数小于(Lesser Than)第二个数
-le:第一个数小于或等于(Lesser or Equal)第二个数
-ge:第一个数大于或等于(Greater or Equal)第二个数
字符串比较
- =:字符串内容相同
- !=:字符串内容不同,! 号表示相反的意思
- -z:字符串内容为空
- -n: 字符是否存在
逻辑测试
短路与
全真才为真
cmd1 && cmd2 命令一为真命令二为真才为真 其中一个真则为假
短路或
一真即为真
cmd1 || cmd2
常见条件
- -a或&&:逻辑与,“而且”的意思全真才为真
- -o或||:逻辑或,“或者”的意思一真即为真
- !:逻辑否
ping 小脚本
-c 发送包的个数
-i 发送的间隔时间
-W 超时时间
-w 多少秒后停止ping操作
3.4.5 双中括号
[[ expression ]] 用法
== 左侧字符串是否和右侧的PATTERN相同
注意:此表达式用于[[ ]]中,PATTERN为通配符
=~ 左侧字符串是否能够被右侧的正则表达式的PATTERN所匹配
注意: 此表达式用于[[ ]]中;扩展的正则表达式
if语法的结构
单分支
if判断条件
then
命令语句
else
命令语句
fi
多分支
if 判断条件1
then
命令序列 需要执行的操作
elif 判断条件2
then
命令序列2
elif判断条件3
then
命令序列
elif 判断条件4
then
命令序列
case语句结构
case多分支结构
case 变量值 in
模式1)
命令序列1
;;
模式2)
;;
......
*)
默认命令序列
esac
case支持glob风格的通配符:
*任意长度任意字符
?任意单个字符
[0-9]指定范围内的任意单个字符
| 或者,如:a|b