簡體   English   中英

如果[$(…| wc -l)= false)觸發,無論輸出如何

[英]if [ $(… | wc -l) = false ] firing regardless of output

我的bash腳本如下所示。 我想檢查git中是否存在存儲庫,如果不存在,則運行一些其他命令。

if [ `git ls-remote --heads $REPOSITORY_PATH $BRANCH | wc -l` = false ]
then
  # Do something if it doesn't exist...
fi

但我跑入的問題是,無論在語句中if返回01似乎總是評估陳述為真。 我在這里想念什么嗎? 如果它返回0我希望它運行,如果它是1我希望它不運行。

bash沒有布爾數據類型; false只是一個普通的字符串,並且您的管道輸出的是文字字符串0 (可能有一些空格填充,具體取決於您的實現,而不是布爾值)。

您需要進行顯式的數值比較:

if [ "$(git ls-remote --heads "$REPOSITORY_PATH" "$BRANCH" | wc -l)" -eq 0 ]; then

(或-ne ,如果你想這時候輸出執行)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM