在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
网友评论