条件语句
1、if条件语句
当条件成立执行相应操作
1)单分支
if 条件 then
执行命令
fi
|
2)双分支
if 条件
then 执行命令1
else 执行命令2
fi
|
*示例
#!/bin/bash
age=20
if [[ $age -gt 18 ]];
then echo "已成年!"
else echo "未成年!"
fi
|
3)多分支
if 条件
then 执行命令1
elif 条件
then 执行命令2
...
else 执行命令n
fi
|
示例
#!/bin/bash
sallray=2000
if [ $sallray -lt 600 ];
then echo "低工资!"
elif [ $sallray -ge 600 ] && [ $sallray -lt 1000 ]
then echo "中等工资"
elif [ $sallray -ge 1000 ] && [ $sallray -lt 1800 ]
then echo "中高等工资"
else echo "高工资"
fi
|
2、case语句
case 变量 in
常量1)
命令1
;;
....
常量n)
命令n
;;
*)
命令n+1
;;
esac
|
示例
#!/bin/bash
sigal=3
case $sigal in
1 )
echo "开灯"
;;
2 )
echo "关灯"
;;
3 )
echo "停电"
;;
* )
echo "无法判断"
esac
|
3、常用的逻辑运算符
逻辑卷标
|
表示意思
|
1.
|
关于档案与目录的侦测逻辑卷标!
|
-f
|
常用!侦测『档案』是否存在 eg: if [ -f filename ]
|
-d
|
常用!侦测『目录』是否存在
|
-b
|
侦测是否为一个『 block 档案』
|
-c
|
侦测是否为一个『 character 档案』
|
-S
|
侦测是否为一个『 socket 标签档案』
|
-L
|
侦测是否为一个『 symbolic link 的档案』
|
-e
|
侦测『某个东西』是否存在!
|
2.
|
关于程序的逻辑卷标!
|
-G
|
侦测是否由 GID 所执行的程序所拥有
|
-O
|
侦测是否由 UID 所执行的程序所拥有
|
-p
|
侦测是否为程序间传送信息的 name pipe 或是 FIFO (老实说,这个不太懂!)
|
3.
|
关于档案的属性侦测!
|
-r
|
侦测是否为可读的属性
|
-w
|
侦测是否为可以写入的属性
|
-x
|
侦测是否为可执行的属性
|
-s
|
侦测是否为『非空白档案』
|
-u
|
侦测是否具有『 SUID 』的属性
|
-g
|
侦测是否具有『 SGID 』的属性
|
-k
|
侦测是否具有『 sticky bit 』的属性
|
4.
|
两个档案之间的判断与比较
;例如[ test file1 -nt file2 ]
|
-nt
|
第一个档案比第二个档案新
|
-ot
|
第一个档案比第二个档案旧
|
-ef
|
第一个档案与第二个档案为同一个档案( link 之类的档案)
|
5.
|
逻辑的『和(and)』『或(or)』
|
&&
|
逻辑的 AND 的意思
|
||
|
逻辑的 OR 的意思
|
运算符号
|
代表意义
|
=
|
等于 应用于:整型或字符串比较
如果在[] 中,只能是字符串
|
!=
|
不等于 应用于:整型或字符串比较
如果在[] 中,只能是字符串
|
<
|
小于 应用于:整型比较
在[] 中,不能使用 表示字符串
|
>
|
大于 应用于:整型比较
在[] 中,不能使用 表示字符串
|
-eq
|
等于 应用于:整型比较
|
-ne
|
不等于 应用于:整型比较
|
-lt
|
小于 应用于:整型比较
|
-gt
|
大于 应用于:整型比较
|
-le
|
小于或等于 应用于:整型比较
|
-ge
|
大于或等于 应用于:整型比较
|
-a
|
双方都成立(and) 逻辑表达式 –a 逻辑表达式
|
-o
|
单方成立(or) 逻辑表达式 –o 逻辑表达式
|
-z
|
空字符串
|
-n
|
非空字符串
|