Bash

jq變數的相等比較

  • July 11, 2021

我有一個執行 curl 請求並通過 jq 輸出狀態的 bash 腳本。我得到了預期的狀態,但是當我比較狀態時,它總是返回“不相等”的值,即使該值相等(或看起來如此)。

這是腳本:

status=( $(curl -H "Content-Type: application/json" -H "Authorization: Basic xxx==" -H "Cache-Control: no-cache" --data-binary "@$entry" $2/$3/_bulk_docs --silent | jq '.[0].status'))
echo $status
if [ "$status" = "409" ]
   then
     echo "Conflict"
   else
     echo "No Conflict"
fi

正如我所料,它在控制台中列印 409。

我在帶有 Cygwin 的 Windows 10 PC 上執行它。

感謝您的進一步幫助!

您的數據最後有一個輸入:

$ status=$'409\r'
$ echo "<<$status>>"
>>409

要刪除它,請tonumber使用jq

status=$( curl ... | jq -r '.[0].status|tonumber' )

另請注意,據我所知,不需要status像您的腳本中那樣是數組變數。

引用自:https://unix.stackexchange.com/questions/371325