linux 操作

比較與測試
程序中的流程控制是由比較語句和測試語句處理的。Bash同樣具備多種與Unix系統級特性相
兼容的執行測試的方法。我們可以用if、if else以及邏輯運算符進行測試,用比較運算符來比

較數據項。除此之外,還有一個test命令也可以用於測試。這


if和else語句可以進行嵌套。if的條件判斷部分可能會變得很長,
但可以用邏輯運算符將它變得簡潔一些:
 [ condition ] && action; # 如果condition爲真,則執行action;
 [ condition ] || action; # 如果condition爲假,則執行action。
&&是邏輯與運算符,||是邏輯或運算符。編寫Bash腳本時,這是一
個很有用的技巧。現在來了解一下條件和比較操作。


算術比較
條件通常被放置在封閉的中括號內。一定要注意在[或]與操作數之間有一個空格。如果
忘記了這個空格,腳本就會報錯。例如:
[$var -eq 0 ] or [ $var -eq 0]
對變量或值進行算術條件判斷:
[ $var -eq 0 ] #當 $var 等於 0 時,返回真
[ $var -ne 0 ] #當 $var 爲非 0 時,返回真
其他重要的操作符如下所示。
 -gt:大於。
 -lt:小於。
 -ge:大於或等於。
 -le:小於或等於。
可以按照下面的方法結合多個條件進行測試:
[ $var1 -ne 0 -a $var2 -gt 2 ] #使用邏輯與-a
[ $var1 -ne 0 -o var2 -gt 2 ] #邏輯或 -o
 文件系統相關測試
我們可以使用不同的條件標誌測試不同的文件系統相關的屬性。
 [ -f $file_var ]:如果給定的變量包含正常的文件路徑或文件名,則返回真。
 [ -x $var ]:如果給定的變量包含的文件可執行,則返回真。
 [ -d $var ]:如果給定的變量包含的是目錄,則返回真。
 [ -e $var ]:如果給定的變量包含的文件存在,則返回真。
 [ -c $var ]:如果給定的變量包含的是一個字符設備文件的路徑,則返回真。
 [ -b $var ]:如果給定的變量包含的是一個塊設備文件的路徑,則返回真。
 [ -w $var ]:如果給定的變量包含的文件可寫,則返回真。
 [ -r $var ]:如果給定的變量包含的文件可讀,則返回真。
 [ -L $var ]:如果給定的變量包含的是一個符號鏈接,則返回真。
使用方法如下:
fpath="/etc/passwd"
if [ -e $fpath ]; then
echo File exists;
else
echo Does not exist;

fi

字符串比較
使用字符串比較時,最好用雙中括號,因爲有時候採用單箇中括號會產生錯誤,所以最
好避開它們。
可以用下面的方法檢查兩個字符串,看看它們是否相同。
 [[ $str1 = $str2 ]]:當str1等於str2時,返回真。也就是說,str1和str2包含
的文本是一模一樣的。
 [[ $str1 == $str2 ]]:這是檢查字符串是否相等的另一種寫法。
也可以檢查兩個字符串是否不同。
 [[ $str1 != $str2 ]]:如果str1和str2不相同,則返回真。
我們還可以檢查字符串的字母序情況,具體如下所示。
 [[ $str1 > $str2 ]]:如果str1的字母序比str2大,則返回真。
 [[ $str1 < $str2 ]]:如果str1的字母序比str2小,則返回真。
 [[ -z $str1 ]]:如果str1包含的是空字符串,則返回真。
 [[ -n $str1 ]]:如果str1包含的是非空字符串,則返回真。

使用邏輯運算符 && 和 || 能夠很容易地將多個條件組合起來:
if [[ -n $str1 ]] && [[ -z $str2 ]] ;
then
commands;
fi
例如:
str1="Not empty "
str2=""
if [[ -n $str1 ]] && [[ -z $str2 ]];
then
echo str1 is nonempty and str2 is empty string.
fi
輸出如下:
str1 is nonempty and str2 is empty string.

發佈了12 篇原創文章 · 獲贊 0 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章