我正在嘗試運行以下 cURL 命令(取自 ArgoCD檔案)。
$ curl $ARGOCD_SERVER/api/v1/session -d $'{"username":"admin","password":"password"}'
使用手動輸入的正確憑據,它運行良好,但我將密碼存盤在環境變數 ( $PASSWORD) 中,并且使用 the'和"引號它不能正確插入密碼。
$ curl $ARGOCD_SERVER/api/v1/session -d $'{"username":"admin","password":"$PASSWORD"}'
我懷疑它使用字串文字$PASSWORD作為實際密碼,而不是變數的內容。我將如何正確插入這個變數?
uj5u.com熱心網友回復:
像這樣:
curl $ARGOCD_SERVER/api/v1/session -d '{"username":"admin","password":"'$PASSWORD'"}'
或這個:
curl $ARGOCD_SERVER/api/v1/session -d "{\"username\":\"admin\",\"password\":\"$PASSWORD\"}"
這也可能會起作用:
curl $ARGOCD_SERVER/api/v1/session -d "{'username':'admin','password':'$PASSWORD'}"
或者:
printf -v data '{"username":"admin","password":"%s"}' "$PASSWORD"
curl $ARGOCD_SERVER/api/v1/session -d "$data"
uj5u.com熱心網友回復:
您可以使用 知乎 創建 JSON:
json=$(jq -c -n --arg username admin --arg password "$password" '$ARGS.named')
curl $ARGOCD_SERVER/api/v1/session -d "$json"
使用jq可確保 JSON 格式正確,無論變數的內容如何:
$ password=$'with\'both"quotes'
$ declare -p password
declare -- password="with'both\"quotes"
$ jq -cn --arg username admin --arg password "$password" '$ARGS.named'
{"username":"admin","password":"with'both\"quotes"}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/341797.html
