Bash

引號內的子shell

  • August 7, 2017

我正在寫一個像這樣的小shell腳本:

curl -X POST --header 'Bearer "$(printf  user:pass | base64)"' 'https://api.com/v1/auth'

為了調試,我切換到 echo:

echo 'Bearer "$(printf  remote-key-sync:2klic-hlqDZPGmqJTwhqVkPubld9ReXAnQSks | base64)"' 

但結果是:

Bearer "$(printf  remote-key-sync:2klic-hlqDZPGmqJTwhqVkPubld9ReXAnQSks | base64)"

如何更新我的 curl 命令,以便它發送 –header ‘Bearer myBase64String’ 與單引號內的 subshel​​l 結果?

從重構程式碼開始。

bearer="Bearer \"$(printf user:pass | base64)\""
curl -X POST --header "$bearer" 'https://api.com/v1/auth'

現在當你去調試時,你不需要再次引用參數。

echo curl -X POST --header "$bearer" 'https://api.com/v1/auth'

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