shell控制语句
1、if语句
(1)if....then 结构
if 测试条件
then 语句1
fi
(2)if...then..else结构
if 测试条件
then 语句1
else 语句2
fi
(3)if..then..elif...then...else结构
if 测试条件
then 语句1
elif 测试条件
then 语句2
else 语句3
fi
重要的是编写测试条件,有3种形式:
(1)用test命令;
(2)用[]方括号将测试条件括起来;
(3)用[[条件表达式]],条件表达式用来测试文件的属性和进行字符串比较。
对于test原型是:test 表达式
test一般与系统运算符搭配起来使用,它可以与如下四类运算符共同使用。
1)字符串测试符
-z s1 ,如果字符串s1的长度为0,则测试条件为真。
-n s1,如果字符串s1的长度大于0,则测试条件为真。
s1,如果s1不是空字符串,则测试条件为真。
s1 = s2,s1 等于s2,则真。
s1 != s2 ,s1 < s2,s1 > s2。注:=、 != 、< 、 > 在使用时,两边加空格。
#!/bin/sh
echo please input your name:
read name
if test -n name
then
echo "name is: "$name
else
echo "name is null"
fi
运行结果:
please input your name:
yuanli
name is: yuanli
2)数值测试运算符
n1 -eq n2 整数n1等于n2
n1 -ne n2 整数n1不等于n2
n1 -lt n2 整数n1小于n2
n1 -le n2 整数n1小于或等于n2
n1 -gt n2 整数n1大于n2
n1 -ge n2 整数n1大于或等于n2
3)逻辑运算符
也就是经常用到的与、或、非
!非
-a 逻辑“与”
-o 逻辑“或”
4)文件运算符:测试文件或目录的操作
-r 文件名, 若文件存在并且可读
-w 文件名,若文件存在并且可写
-x 文件名,若文件存在并且可执行
-f 文件名,若文件存在并且是普通文件
-d 文件名,若文件存在并且是目录文件
-p 文件名,若文件存在并且是命名的FIFO文件
-b 文件名,若文件存在并且是块设备文件
-c 文件名,若文件存在并且是字符设备文件
-s 文件名,若文件存在并且是文件的长度大于0
-t 文件描述字,若文件被打开并且文件描述字是与终端设备相关的。
2、case语句
case 字符串 in
模式串表达式1) 语句1;;
模式串表达式2) 语句2;;
esac
注:一个模式表达式可以包含多个模式串,但要用“|”隔开。
#!/bin/sh
echo please input your name
read name
case $name in
tom | jim)
echo your name is tom
;;
yuanli)
echo your name is yuanli
;;
*)
echo i do not know your name
;;
esac