条件语句

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



非空字符串