SHELL(if,case,条件测试)

目录

一、条件测试

1、测试——test

2、文件测试

3、整数值比较

4、字符串比较

5、浮点数的运算

6、逻辑测试

7、三元运算符

二、if语句

1、单分支语句

2、双分支

3、多分支

三、case


一、条件测试

1、测试——test

测试表达式是否成立,若成立返回0,否则返回其他数值

格式1:test 条件表达式
格式2:[ 条件表达式 ]
 

2、文件测试

格式:[ 操作符  文件或目录 ]
注意:中括号两边要有空格

boole  true(真)  false(假)
返回码     0       非0    ##linux系统shell脚本里    
           1        0     ##java  C语言里

常用的测试操作符

-d    测试 指定的对象是否为目录(directory),指定的目录是否存在
-e    测试目录或文件是否存在(Exist)
-f    测试是否为文件(File),指定的文件是否存在
-r    测试当前用户是否有权限读取(Read)
-w    测试当前用户是否有权限写入(Write)
-x    测试当前用户是否有权限执行(eXcute)
-L    测试文件是否为符号链接(软链接文件)

 

 

3、整数值比较

格式:
[ 整数变量1 操作符 整数变量2 ]

常用的操作符

操作符    说明
-eq    等于(==)
-gt    大于(>)
-lt    小于(<)
-ge    大于或等于(>=)
-le    小于或等于(<=)
-ne    不等于(!=)

4、字符串比较

[ "字符串1" = "字符串2" ]  或者  [ "字符串1" == "字符串2" ]
[ "字符串1" != "字符串2" ]
[ -z "字符串" ]    -z:判断字符串是否为空,或者指定的变量是否为空值
[ -n "字符串" ]    -n:检查是否有字符串存在

操作符    说明
=    字符串内容相同
!=    字符串内容不同,!号表示相反的意思
-z    字符串内容为空
-n    检查是否有字符串存在

 

 


5、浮点数的运算

方法一:echo "浮点运算字符串" | bc
方法二:awk 'BEGIN {print 浮点运算字符串}'
 


6、逻辑测试

格式:
[ 表达式1 ] && [ 表达式2 ]   等同于 [ 表达式1 -a 表达式2 ]  [[ 表达式1 && 表达式2 ]] 
[ 表达式1 ] || [ 表达式2 ]   等同于 [ 表达式1 -o 表达式2 ]  [[ 表达式1 || 表达式2 ]] 

常用操作符    说明
-a或&&    且,表达式的两边都需要成立
-o或▕▕    或,只需要前后条件中一个成立
!    逻辑否

 

两个表达式在同一个[ ]中使用&&或 | | 时,需要再加个[ ]

 

7、三元运算符

java、C语言环境:
条件表达式?a:b
当条件表达式为真时,取a值;当条件表达式为假时,取b值

Shell脚本:
[ 表达式 ] && a || b
当表达式成立 取a值:否则取b值

二、if语句

1、单分支语句

如果只有一个判断式要进行,那么我们可以使用单分支的if语句。只有在条件成立时才会执行,否则不执行任何操作。

 

 


格式:
if [ 表达式 ];then
  ...
fi

例子:

 

 

2、双分支

格式:
if [ 表达式 ];then
  ...
else
  ...
fi

 

例子:

 

 

3、多分支

格式:
if [ 表达式 ];then
  ...
elif [ 表达式 ];then
  ...
elif [ 表达式 ];then
  ...
[else]
fi
 

例子

 

 

三、case

case 可以用来判断一个变量的不同取值

格式:
case 变量值 in 
模式一)
   命令序列
;;
模式二)
   命令序列 
;;
……
*)
   默认命令序列
esac

注意点:

case行首必须以单词“in”,每一模式必须以单个右括号")"结束

双分号";;"表示命令序列的结束

模式字符串中,可以用方括号表示一个连续的范围,如"[0-9]";还可以使用竖杠|表示或,比如a|b

最后的*)表示默认模式,其中的*相当于通配符

例子
代码如下(示例):

 

 


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值