if 使用的表达式
If语句:
1,if[expression]
then
#code block
fi
2,if[expression]
then
#code block
else
#code block
fi
3,if[expression]
then
#code block
else
if[expression]
then
#code block
else
#code block
fi
fi
比较操作 整数操作 字符操作:
相同 -eq =
不同 -ne !=
大于 -ge >
小于 -lt <
大于或等于 -ge
小于或等于 -le
为空 -z
不为空 -n
例:
比较整数a和b是否相等:if [ $a = $b ](也可用eq)
判断整数a是否大于整数b:if [ $a -gt $b ]
比较字符串a和b是否相等:if [ $a = $b ]
判断字符串a是否为空:if [ -z $a ]
判断整数变量a是否大于b:if [ $a -gt $b ]
注意:
1,在“[”和"]"符号的左右都留有空格
2,“=”左右都有空格
判断:
-e 文件已经存在
-f 文件是普通文件
-s 文件大小不为零
-d 文件是一个目录
-r 文件对当前用户可以读取
-w 文件对当前用户可以写入
-x 文件对当前用户可以执行
例:
#!/bin/sh
folder=/home
[ -r "$folder" ] && echo"Can read $foldeer"(当[ -r "$folder" ]为真时才考虑后面的条件,可以被打印出来)
[ -f "folder" ] || echo"this is not file"(当[ -f "folder"]为假时才考虑后面的条件,可以被打印出来 )
for循环结构与c语言中有所不同,在BASH中for循环的基本结构是:
for var in [list]
do
#code block
done
其中$var是循环控制变量,[list]是var需要遍历的一个集合,do/done对包含了循环体,相当于c语言中的一对大括号。另外如果do和for被写在同一行,必须在do前面加上“;”。如:for $var in [list];do
例:
1,#!/bin/bash
for day in Sun Mon Tue Wed Thu Fri Sat
do
echo $day
done
运行结果:Sun
Mon
Tue
Wed
Thu
Fri
Sat
2,如果列表被包含在一对双引号中,则被认为是一个元素:
#!/bin/bash
for day in "Sun Mon Tue Wed Thu Fri Sat"
do
echo $day
done
运行结果:Sun Mon Tue Wed Thu Fri Sat
注意:在for所在那行,变量day是没有加“$”符号的,而在循环体内,echo所在行变量$day是必须加上“$’符号的。
while循环结构是:
while [condition]
do
#code block
done
until循环结构是:
until [condition]
do
#code block
done
while和until区别在于while是为真时执行,until是为假时执行
BASH中的case结构与c语言中的switch语句的功能比较类似,可以用于进行多项分支控制。
case "$var"in
Condition1)
;;
Condition2)
;;
*)
default statments;;
esac
例:
#!/bin/bash
echo "Hit a key, then hit return."
read keypress
case "$keypress"in
[A-Z] echo "Uppercase letter";;
[a-z] echo "Lowercase letter";;
[0-9] echo "Digit";;
*) echo "Punctuation, whitespace, or otheer";;
esac