Bash
引號內的子shell
我正在寫一個像這樣的小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’ 與單引號內的 subshell 結果?
從重構程式碼開始。
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'