引号内的子外壳

Phi*_*ide 0 bash quoting command-substitution subshell

我正在写一个像这样的小shell脚本:

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

为了调试,我切换到 echo:

echo 'Bearer "$(printf  remote-key-sync:2klic-hlqDZPGmqJTwhqVkPubld9ReXAnQSks | base64)"' 
Run Code Online (Sandbox Code Playgroud)

但结果是:

Bearer "$(printf  remote-key-sync:2klic-hlqDZPGmqJTwhqVkPubld9ReXAnQSks | base64)"
Run Code Online (Sandbox Code Playgroud)

如何更新我的 curl 命令,以便它在单引号内发送 --header 'Bearer myBase64String' 和 subshel​​l 结果?

che*_*ner 6

从重构代码开始。

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

现在当你去调试时,你不需要再次引用参数。

echo curl -X POST --header "$bearer" 'https://api.com/v1/auth'
Run Code Online (Sandbox Code Playgroud)