[英]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
返回0
或1
似乎總是評估陳述為真。 我在這里想念什么嗎? 如果它返回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.