文章首發於【陳樹義的博客園】,點擊跳轉到原文:https://www.cnblogs.com/chanshuyi/p/quick_start_of_shell_11_string_compare.html
在 Shell 中進行字符串比較有專門的六個操作符,他們分別是:
=
:檢測兩個字符串是否相等,相等返回 true。!=
:檢兩個字符串是否相等,不相等返回 true。-z
:檢測字符串長度是否為0,為 0 返回 true。-n
:檢測字符串長度是否為0,不為 0 返回 true。str
:檢測字符串是否為空,不為空返回 true。
要記得操作符左右兩邊都要加空格,否則會報語法錯誤。
這六個操作符可以進行字符串的非空比較,長度比較,相等比較等。下面的這個例子完整列出了這六個字符串操作符的使用方法:
#!/bin/bash
# author:陳樹義
# site:http://www.shuyi.me
a="abc"
b="efg"
# 字符串是否相等
if [ $a = $b ]
then
echo "$a = $b : a 等於 b"
else
echo "$a = $b: a 不等於 b"
fi
if [ $a != $b ]
then
echo "$a != $b : a 不等於 b"
else
echo "$a != $b: a 等於 b"
fi
# 字符串長度是否為0
if [ -z $a ]
then
echo "-z $a : 字符串長度為 0"
else
echo "-z $a : 字符串長度不為 0"
fi
if [ -n "$a" ]
then
echo "-n $a : 字符串長度不為 0"
else
echo "-n $a : 字符串長度為 0"
fi
# 字符串是否為空
if [ $a ]
then
echo "$a : 字符串不為空"
else
echo "$a : 字符串為空"
fi
輸出結果為:
abc = efg: a 不等於 b
abc != efg : a 不等於 b
-z abc : 字符串長度不為 0
-n abc : 字符串長度不為 0
abc : 字符串不為空