shell补-运算-条件测试

发布时间 2023-12-15 10:34:37作者: WeChat2834
shell补-运算-条件测试
条件测试语法 说明
语法1:test <测试表达式> 这是利用test命令进行条件测试表达式的方法。test命令和"<测试表达式>"之间至少有一个空格。
语法2:[ <测试表达式> ] 这是通过[]单中括号进行条件测试表达式的方法,和test命令的用法相同,这是推荐的方法,[]的边界和内容之间至少有一个空格
语法3:[[ <测试表达式>]] 这是通过[[]]双中括号进行条件测试表达式的方法,是比test和[]更新的语法格式。 [[]]的边界和内容之间至少有一个空格
语法4:((<测试表达式>)) 这是通过(())双小括号进行条件测试表达式的方法,一般用于if语句理。(())双小括号两端不需要有空格

参考man bash 搜索CONDITIONAL EXPRESSIONS 或者man test

  • 与文件相关的判断/条件

f1 -nt f2 file1 newer than file2

f1 -ot f2 file1 older than file2

常用格式

#满足条件,执行某个命令
[ 条件 ] && 命令
#满足条件,执行多个命令
[ 条件 ] && {
cmd1
cmd2
}

#不满足条件,执行某个命令
[ 条件 ]|| 命令
#不满足条件,执行多个命令
[ 条件 ]|| {
cmd1
cmd2
}

#    cmd1 && cmd 2    前一个命令执行成功,再执行后面命令
#    cmd3 || cmd 4	  前一个命令执行失败,再执行后面的命令
#################################################################
[root@localhost sub_str]# cat calculationtestawk2.sh 
#!/bin/bash
a=${1}
b=${2}

[ $# -ne "2" ] &&  {    ####注意不要写成这样   { echo "请录入2个参数" } ;花括号换行要
 exit 
}
 echo "请录入2个参数"  
 exit 

}

expr $a + $b >/dev/null  || {   

echo "请录入数字型参数!"
exit
}

echo "${a} +${b}的值为"  `awk -v n=$a -v c=$b 'BEGIN {print n+c}'`
echo "${a} -${b}的值为"  `awk -v n=$a -vc=$b 'BEGIN {print n-c}'`
echo "${a} *${b}的值为"  `awk -v n=$a -vc=$b 'BEGIN {print n*c}'`
echo "${a} /${b}的值为"  `awk -v n=$a -vc=$b 'BEGIN {print n/c}'`
[root@localhost sub_str]# sh calculationtestawk2.sh   1 2 3
请录入2个参数
[root@localhost sub_str]# sh calculationtestawk2.sh   1 a
expr: 非整数参数   #####如果不想看到错误信息,可后台入   expr $a + $b & >/dev/null 
请录入数字型参数!
[root@localhost sub_str]# sh calculationtestawk2.sh   1 4
1 +4的值为 5
1 -4的值为 -3
1 *4的值为 4
1 /4的值为 0.25
[root@localhost sub_str]# 

字符串比较

温馨提示,最好加上双引号

-z zero 如果变量/字符串是空则成立

-n not zero 如果变量/字符串不是空则成立

= 判断两个字符串/变量内容是否一致,相等则成立 true 注意加上双引号

!= 判断两个字符串/变量内容是否一致,步相等则成立 true注意加上双引号