shell 比较判断
引用自:
http://www.tsnc.edu.cn/default/tsnc_wgrj/doc/abs-3.9.1_cn/html/comparison-ops.html
- #! /bin/sh
- var1=20
- var2=21
- if [ $var1 -ne $var2 ];then
- echo "1. -ne means NOT equal true"
- fi
- xyz="11"
- if [ -n "$xyz" ];then
- echo "2. -n means init true(MUST to use \"\")"
- fi
- if [ -z "$1" ];then
- echo "3. -z means NOT command-line arguments true"
- fi
- file="/etc/mtab"
- if [ -e $file ];then
- echo "4. -e means file exists true"
- fi
- home="/root"
- if [ -d $home ];then
- echo "5. -d means dir exists true"
- fi
- [ "true" ] && [ "false" ] && [ 0 ] && [ 1 ] && [ -1 ] && echo "6. string and integer means true"
二元比较操作符用来比较两个变量或数字. 注意整数比较与字符串比较的区别.
等于
if [ "$a" -eq "$b" ]
不等于
if [ "$a" -ne "$b" ]
大于
if [ "$a" -gt "$b" ]
大于等于
if [ "$a" -ge "$b" ]
小于
if [ "$a" -lt "$b" ]
小于等于
if [ "$a" -le "$b" ]
小于(在双括号中使用)
(("$a" < "$b"))
小于等于(在双括号中使用)
(("$a" <= "$b"))
大于(在双括号中使用)
(("$a" > "$b"))
大于等于(在双括号中使用)
(("$a" >= "$b"))
等于
if [ "$a" = "$b" ]
等于
if [ "$a" == "$b" ]
与=等价.
==比较操作符在双中括号对和单中括号对中的行为是不同的.
|
不等号
if [ "$a" != "$b" ]
这个操作符将在[[ ... ]]结构中使用模式匹配.
小于, 按照ASCII字符进行排序
if [[ "$a" < "$b" ]]
if [ "$a" \< "$b" ]
注意"<"使用在[ ]结构中的时候需要被转义.
大于, 按照ASCII字符进行排序
if [[ "$a" > "$b" ]]
if [ "$a" \> "$b" ]
注意">"使用在[ ]结构中的时候需要被转义.
参考例子 26-11, 这个例子展示了如何使用这个比较操作符.
字符串为"null", 意思就是字符串长度为零
字符串不为"null".
当-n使用在中括号中进行条件测试的时候, 必须要把字符串用双引号引用起来. 如果采用了未引用的字符串来使用! -z, 甚至是在条件测试中括号(参见例子 7-6)中只使用未引用的字符串的话, 一般也是可以工作的, 然而, 这是一种不安全的习惯. 习惯于使用引用的测试字符串才是正路. |