test或[命令
例:
if test -f fred.c #if [ -f fred.c ]两个完全等价
then
...
fi
这个命令是判断fred.c文件存不存在, 使用 [ 的时候要注意, 后面要留个空格。
test命令可以使用的条件类型归为三类:
字符串比较
string1=string2 //两个字符串相同为真
string1!=string2 //两个字符串不相同为真
-n string //字符串不为空, 结果为真
-z string //字符串为空, 结果为真
算术比较
== : -eq
!=: -ne
>: -gt
<: -lt
>=: -ge
<=: le
!: !
文件有关的条件测式
-d file //文件是目录 为真
-e file //文件存在 为真
-f file //文件存在 为真
-g file //文件的set-group-id位被设置 为真, 授予了程序其所在组的访问权限
-r file //文件可读 为真
-s file //文件大小不为0 为真
-u file //文件的set-user-id位被设置 为真, 授予了程序其拥有者的访问权限而不是其使用者的访问权限
-w file //文件可写 为真
-x file //文件可执行 为真
if 语句
if 条件
then
//do...
else #可选的
//do...
fi
elif语句
if 条件
then
//do...
elif 条件
then
//do...
fi
for语句
for 值 in 集合
do
//do..
done
例:
#/bin/sh
for file in $(ls *.sh); do
lpr $file
done
exit 0
可以使用 $()来组织集合内容, 可以是多个变量值或是一个shell指令
while语句
while 条件
do
//do...
done
until语句
until 条件
do
//do...
done
这里需要区别while语句的是, while到条件满足时循环, until到条件不满足时循环
case语句
case 值 in
分支) //do...;;
分支) //do...;;
分支|分支|分支) //do...;;
注意这里的 ) 和;;符号
例:
#!/bin/sh
read mon
case $mon in
y | yes)
echo "so good it is be "
echo yes;;
n) echo no;;
N) echo no;;
esac
exit 0
AND(&&)列表
表达式1 && 表达式2 && 表达式3
从左开始执行, 命令返回的是true就继续执行, 直到命令返回false, 列表终止执行
OR(||)列表
表达式1 || 表达式2 || 表达式3
从左开始执行, 命令返回false就继续执行, 直到命令返回true,列表终止执行
语句块:
#!/bin/sh
echo "come on" &&
{
echo yes
echo "This is just a test"
echo "done!!!"
}
exit 0
可以将多条语句放在{ 和 } 之间, 这样就会执行块里面的所有语句