日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Bash : test 命令

發布時間:2025/3/21 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Bash : test 命令 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在 Bash 腳本中我們一般會使用 test 命令來進行條件檢查。test 命令的返回值為 0 或 1。0 表示 true, 1 表示 false。簡單起見,我們可以直接認為 test 的結果為 true 或 false。

還可以使用中括號代替 test,需要注意的是括號和表達式之間一定要留有空格,所以下面的兩種寫法是等同的:

test "$1" = "$name" 或 [ "$1" = "$name" ]

test 命令的主要用途是檢查字符串、比較整數和檢查文件的屬性。本文將通過簡單的示例介紹 test 命令的常見用法。

檢查字符串

判斷字符串是否為空

test 檢查字符串時,非空的字符串返回 true,空字符串或者沒有參數都返回 false。

if test "$abc"; thenecho "It's not an empty string." elseecho "It's an empty string." fi

運行上面代碼的輸出結果為:

It's an empty string.

這是因為我們沒有定義變量 abc ,所以 "$abc" 被解釋成了空字符串。

其實使用檢查空字符串的運算符 -n 會讓代碼具有更清晰的含義:

if test -n "$abc"; thenecho "It's not an empty string." elseecho "It's an empty string." fi

-n 的含義為:字符串的長度不為 0 時返回 true。所以這段代碼的輸出結果和上面一樣。

如果我們需要判斷一個空的字符串可以直接使用運算符 -z:

if test -z "$abc"; thenecho "It's an empty string." fi

這段代碼輸出的結果仍然是:

It's an empty string.

判斷字符串相等

test 支持兩個運算符來判斷字符串相等:= 和 ==。

abc="hello" if test "hello" == "$abc"; thenecho "You got same string." fi

運行上面代碼的輸出結果為:

You got same string.

因為 = 看起來更像是在賦值,所以我更傾向于使用 ==。但是當你的腳本需要跨平臺時,最好還是使用 =(test 中的 = 是 POSIX 標準定義的!)。

如果要判斷兩個字符串不相等,可以使用 != 運算符:

abc="helloo" if test "hello" != "$abc"; thenecho "Your word is not 'hello'." fi

運行上面代碼的輸出結果為:

Your word is not 'hello'.

為什么用雙引號把變量包起來?

如果你留意前面的代碼會發現我們在引用變量時都用雙引號包起來了,這是寫 shell 腳本中的一個小技巧。嘗試運行下面的代碼:

abc="hello xx" if test "hello" != $abc; thenecho "Your word is not 'hello'." fi

會提示語法錯誤:

因為變量 abc 的值為 "hello xx",在字符串中間有個空格。所以在 Bash 進行命令解釋的時候,上面的 test 命令變成了:

test "hello" != hello xx

這不是一個合法的 test 命令,所以腳本執行時就報錯了!

其實不光是空格,包含在 $IFS 中的其它字符,還有變量為空時,都會造成語法錯誤。所以使用雙引號包裹變量是一種保護機制,可以提高腳本的健壯性。

比較數字(整數)

test 支持整數間的比較操作,可用的運算符有 '-eq','-ne','-lt','-le','-gt','-ge'。
比如判斷兩個整數相等可以使用 -eq 運算符:

num=3 if test "$num" -eq 3; thenecho "num is 3." fi

運行上面代碼的輸出結果為:

num is 3.

常見數字運算符的含義分別為:

n1 -eq n2 : 整數 n1 等于 n2 n1 -ne n2 : 整數 n1 不等于 n2 n1 -lt n2 : n1 小于 n2 n1 -gt n2 : n1 大于 n2 n1 -le n2 : n1 小于或等于 n2 n1 -ge n2 : n1 大于或等于 n2

檢查文件屬性

檢查文件的屬性也是 test 常見用法。比如要檢查一個文件的類型是不是普通文件,可以使用 -f 選項:

touch test.sh filename="test.sh" if test -f "$filename"; thenecho "It's a regular file." fi

運行上面代碼的輸出結果為:

It's a regular file.

另一個重要的選項是 -d,它用來檢查一個路徑是不是目錄:

dirname="/bin" if test -d "$dirname"; thenecho "It's a directory." fi

運行上面代碼的輸出結果為:

It's a directory.

如果是僅僅判斷一個路徑是否存在,可以使用 -e 運算符。它僅檢查文件是否存在而不關心文件的具體類型。

下面是其它一些常用的文件檢查運算符:

-b file : 文件存在并且是塊設備文件。 -c file : 文件存在并且是字符設備文件。 -d file : 文件存在并且是一個目錄。 -e file : 文件存在。 -f file : 文件存在并且是一般文件。 -g file : 文件存在并且設置了 setgid 位。 -h file : 文件存在并且是一個鏈接文件。 -p file : 文件存在并且是一個命名管道(FIFO)。 -r file : 文件存在并且是可讀的。 -s file : 文件存在并且有內容。 -u file : 文件存在并且設置了 setuid。 -w file : 文件存在并且是可寫的。 -x file : 文件存在并且是可執行的。 -S file : 文件存在并且是一個 socket。

總結

個人感覺 test 是 Bash 中很重要的命令。在你掌握了基本的腳本編寫技能后,通過 test 命令并結合 if 等流程語句你可以控制程序的執行流程,從而開啟腳本編程的大門。

總結

以上是生活随笔為你收集整理的Bash : test 命令的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产suv精品一区 | 激情久久久久 | 日本高清不卡在线 | 久草热视频 | 亚洲精品一区在线观看 | 亚洲精品成人电影 | 2024国产精品视频 | 91www| 日韩av电影网 | 韩国裸体网站 | 538在线精品 | 四虎永久在线精品免费网址 | 国产在线播放一区二区三区 | 清纯唯美亚洲综合 | 日韩中文字幕在线视频 | 欧美大片高清 | 国产成人久久精品流白浆 | 黄色av视屏| 中国第一毛片 | 成人免费国产 | 91xxxxx| 毛片aa| 日韩a级片在线观看 | 欧洲成人在线 | av爽妇网 | xxxx久久| 国产精品久久久久久久久久直播 | 久久中文字幕人妻 | 99福利影院 | 黄色片免费在线观看 | 国产一卡二卡在线播放 | 国精无码欧精品亚洲一区蜜桃 | 91色偷偷 | 午夜视频福利 | 国产中文字幕在线播放 | 精东影业一区二区三区 | 色www情 | 国产精品一区二区av日韩在线 | 欧美日韩国产精品综合 | 青青草小视频 | 视频二区在线观看 | 亚洲午夜在线 | 亚洲av无码国产精品麻豆天美 | 粗了大了 整进去好爽视频 日本女优中文字幕 | 日韩中文一区二区三区 | 久久人妻精品白浆国产 | 鲁大师私人影院在线观看 | 看免费一级片 | 国产一区二区激情 | 亚洲一区二区免费在线观看 | 四川丰满少妇被弄到高潮 | 阿v免费视频 | 美女福利在线视频 | 黄瓜视频在线免费看 | 无人在线观看的免费高清视频 | 国产精品老熟女视频一区二区 | 欧美tickle狂笑裸体vk | 美国一级黄色大片 | 91黄瓜| 精品无码一区二区三区电影桃花 | 阿v天堂2018| 亚洲图色av | 新婚夫妇白天啪啪自拍 | 蜜桃av色偷偷av老熟女 | 天堂网在线最新版www中文网 | 2021中文字幕 | 在线无码va中文字幕无码 | 免费欧美在线 | 日韩在线观看免费av | 亚洲在线观看av | 国产综合精品视频 | 亚洲欧美一区二区三区孕妇 | 国产在线最新 | 成av人在线观看 | 欧美日韩国产免费 | 精品国产精品 | 青青草原国产在线 | 9l视频自拍九色9l视频 | 国产一区二区自拍 | 女人高潮潮呻吟喷水 | 女厕厕露p撒尿八个少妇 | 嫩操影院 | 影音先锋男人站 | 超碰免费成人 | 人妻一区二区三 | 一区二区三区福利视频 | 国产男女猛烈无遮挡免费视频动漫 | 日本免费不卡视频 | 色激情综合| 做爰视频毛片视频 | 永久国产 | av手机在线观看 | 亚洲xx站| 97色在线| 热玖玖| 欧美一级免费在线 | 成人免费一区二区 | 麻豆精品国产传媒av绿帽社 | 亚洲精品网站在线播放gif |