shell——分支语句
文章目录
- 基本语法
- 常用判断条件
- (1)两个整数之间比较
- (2)按照文件权限进行判断
- (3)按照文件类型进行判断
- (4)多条件判断(&& 表示前一条命令执行成功时,才执行后一条命令,|| 表示上一条命令执行失败后,才执行下一条命令)
- if分支语句
- 基本语法
- 单分支判断:
- 多分支判断
- case 语句
- 基本语法
- 编写脚本
基本语法
(1)test condition
(2)[ condition ](注意condition 前后要有空格)
注意:条件非空即为true,[ atguigu ]返回true,[ ] 返回false。
$?为0表示返回值为0,表示运算正确。
test $a -eq 6
echo $?
1
test $a -eq 5
echo $?
0
常用判断条件
(1)两个整数之间比较
- -eq 等于(equal) -ne 不等于(not equal)
- -lt 小于(less than) -le 小于等于(less equal)
- -gt 大于(greater than) -ge 大于等于(greater equal)
注:如果是字符串之间的比较,用等号“=”判断相等;用“!=”判断不等。
[ $a -lt 8 ]
echo $?
0
[ $a -gt 3 ]
echo $?
0
[ $a -le 3 ]
echo $?
1
(2)按照文件权限进行判断
- -r 有读的权限(read)
- -w 有写的权限(write)
- -x 有执行的权限(execute)
[ -r add.sh ]
echo $?
0
[ -x test1.sh ]
echo $?
1
(3)按照文件类型进行判断
- -e 文件存在(existence)
- -f 文件存在并且是一个常规的文件(file)
- -d 文件存在并且是一个目录(directory)
[ -e test1.sh ]
echo $?
0
[ -f t ]
echo $?
1
[ -d t ]
echo $?
1
[ -f parameter.sh ]
echo $?
0
(4)多条件判断(&& 表示前一条命令执行成功时,才执行后一条命令,|| 表示上一条命令执行失败后,才执行下一条命令)
类似于if else:表达式 ,满足条件输出,不满足条件输出
[ $a -lt 20 ] && echo "a<20" || "echo a>20"
a<20
if分支语句
基本语法
(1)单分支
if [ 条件判断式];then
程序
fi
或者
if [ 条件判断式]
then
程序
fi
(2)多分支
if [ 条件判断式]
then
程序
elif [ 条件判断式]
then
程序
else
程序
fi
注意事项:
①[ 条件判断式],中括号和条件判断式之间必须有空格
②if 后要有空格
单分支判断:
a=25
if [ $a -gt 18 ];then echo ok; fi
ok
a=15
if [ $a -gt 18 ];then echo ok; fi
创建脚本文件:
chmod +x if_test.sh
./if_test.sh 25
ok
多个条件判断:
a=23
if [ $a -gt 18 ]&&[ $a -le 35 ];then echo ok;fi
ok
或者 :-a 表示and ,-o 表示or
if [ $a -gt 18 -a $a -le 35 ];then echo ok;fi
ok
多分支判断
./if_test.sh 25
青年人
./if_test.sh 216
老年人
./if_test.sh 16
未成年
./if_test.sh 45
中年人
case 语句
基本语法
case $变量名in
"值1")
如果变量的值等于值1,则执行程序1
;;
"值2")
如果变量的值等于值2,则执行程序2
;;
…省略其他分支…
*)
如果变量的值都不是以上的值,则执行此程序
;;
esac
注意事项:
(1)case 行尾必须为单词“in”,每一个模式匹配必须以右括号“)”结束。
(2)双分号“;;”表示命令序列结束,相当于java 中的break。
(3)最后的“*)”表示默认模式,相当于java 中的default。
编写脚本
新建脚本文件:
vim case_test.sh
chmod +x case_test.sh
./case_test.sh 1
one
./case_test.sh 2
two
./case_test.sh 3
three
./case_test.sh 4
other number