|
test命令,测试条件是否成立,如果成立返回0并执行,不成立返回1,而且不执行
格式: [ ]左右括号两侧必须各加一个空格!
if test 条件 或者 if [ 条件 ]
then then
commands commands
fi fi
符合条件测试:
逻辑与:
第一个条件为假时,第二个条件不用判断,都不会执行
第一个条件为真时,接着判断第二个条件,两个都为真才执行
if [ 条件 ] && [ 条件 ] 两个条件都满足才执行then部分
逻辑或:
if [ 条件 ] || [ 条件 ] 两个条件满足一个执行then部分
实例:
id user1 && echo "user1 exists" || useradd user1 && echo "user1 add"
如果 user1 已存在则输出 user1 exists,如果不存在则创建user1并输出 user1 add
模式匹配测试
#!/bin/bash #!/bin/bash
if [[ $USER = r* ]] if [[ $USER = b* ]]
then then
echo " ... " echo "hello $USER"
else else
echo " ... " echo " sorry, I don't know you "
fi fi
文件测试:
-d file 检测是否为目录
-f file 检测是否为文件
-e file 检测目录或文件是否存在
-s file 检测是否存在并且非空
-r file 检测是否存在并有读权限
-w file 检测是否存在并有写权限
-x file 检测是否存在并有可执行权限
file1 -nt file2 检测file1是否比file2新
file1 -ot file2 检测file1是否比file2旧
整数值比较:
-eq 第一个数等于第二个数 =
-ne 第一个数不等于第二个数 ≠
-gt 第一个数大于第二个数 >
-lt 第一个数小于第二个数 <
-ge 第一个数大于或等于第二个数 ≥
-le 第一个数小于或等于第二个数 ≤
字符串比较:
两个变量之间比较使用转译符号 \= \< \>
= 第一个字符串已第二个字符串相同
!= 第一个字符串与第二个字符串不相同 ( ! 表示取反)
< 第一个数小于第二个数
> 第一个数大于第二个数
-n 检查字符串是否非空
-z 检查字符串是否为空
逻辑测试:
&&:逻辑与,表示 而且.前后两个条件都成立,返回值才为0.
|| :逻辑或,表示 或者.两个条件成立一个,返回值为0
! :逻辑否.表示 不 . 当条件都不成立时,返回值才为0
退出码状态:
0 命令成功结束
1 通用未知错误
2 误用shell错误
126 命令不可执行
127 没找到命令
128 无效退出参数
128+x linux信号x的严重错误
130 命令通过Ctrl+c终止
255 退出状态码越界
双圆括号命令符号:
val++ 后增
val-- 后减
++val 先增
--val 后增
! 逻辑求反
~ 未求反
** 幂运算
<< 左位移
>> 右位移
& 位布尔和
| 位布尔或
&& 逻辑和
|| 逻辑或
|
|
|