美文网首页
Linux: 判断和比较

Linux: 判断和比较

作者: LET149 | 来源:发表于2023-10-07 10:16 被阅读0次

在shell中比较两个量

1. test

test A == B

  • 判断A是否与B相同
  • echo $? 来通过状态退出码来查看比较结果,0表示相同,1表示不相同
  • 也可以使用 test A == B ; echo $? 来直接在一行命令后查看
  • 这种比较只能应用于非数值比较,如要进行数值比较,则查看第3部分
2. [ ]

[ A == B ]

  • 判断A是否与B相同
  • echo $? 来通过状态退出码来查看比较结果,0表示相同,1表示不相同
  • 也可以使用 [ A == B ] ; echo $? 来直接在一行命令后查看
  • 可以使用 [ -z $A] ; echo $? 来查看变量A是否为空
  • 如果为空,则返回值为0;如果为非空,则返回值为1
  • 可以使用 [ -n $A ] ; echo $? 来查看变量A是否为非空
  • 如果为非空,则返回值为1;如果为空,则返回值为0
  • 这种比较只能应用于非数值比较,如要进行数值比较,则查看第3部分
3. 数值比较

语法
test number_1 运算符号 number_2
[ number_1 运算符号 number_2 ]

进行数值的表较依然使用 test[ ] 进行,比较的时候,要使用以下运算符号

数值比较符号
(base) [zhiyong@malab Learn]$ test 3 -eq 3;echo $?  #判断是否相同
0

(base) [zhiyong@malab Learn]$ test 3 -eq 3 && echo Y || echo N  #判断是否相同
Y

(base) [zhiyong@malab Learn]$ test 3 -le 4 && echo Y || echo N  #判断是否小于等于
Y

(base) [zhiyong@malab Learn]$ [ 3 -ge 4 ] && echo Y || echo N  #判断是否大于等于
N

(base) [zhiyong@malab Learn]$ [ 3 -gt 4 ] && echo Y || echo N  #判断是否大于等于
N

(base) [zhiyong@malab Learn]$ [ 3 -lt 4  ] && echo Y || echo N  #判断是否小于等于
Y
  • [ ] 内部,支持使用 -a-o 进行组合
  • -a : 逻辑和
  • -o : 逻辑或
4. 文件属性的判断和比较

利用 test 或者 [ ] 可以对文件的属性进行判断和比较

(base) [zhiyong@malab Learn]$ [ -e k ]; echo $?  #判断是否存在文件k
1

(base) [zhiyong@malab Learn]$ [ -e b ]; echo $?  #判断是否存在文件b
0
文件属性判断和比较
5. [[ ]]
  • [[ ]] 进行比较,并不是所有的shell都支持,但是bash是支持的
  • [ ] 可以使用的表较符号,在 [[ ]] 中都可以使用
  • 可以使用 >< 直接进行比较,比较的时候shell默认使用本地locale语言进行比较,如果要使用ASCII码进行比较,则需要首先通过 LANG=C 来设置比对语言为ASCII码
  • 在用ASCII码进行比较时,大小顺序为 数字 < 大写字母 < 小写字母
  • 支持在内部使用 &&|| 进行组合
(base) [zhiyong@malab Learn]$ [[ b > a && 1 < 2 ]] && echo "Yes" || echo "No"
Yes
(base) [zhiyong@malab Learn]$ [[ b > a && 1 < 1 ]] && echo "Yes" || echo "No"
No

(base) [zhiyong@malab Learn]$ [[ b > a || 1 < 1 ]] && echo "Yes" || echo "No"
Yes

相关文章

网友评论

      本文标题:Linux: 判断和比较

      本文链接:https://www.haomeiwen.com/subject/hbiqgktx.html