gpt4 book ai didi

Bash:以字符串格式设置环境变量

转载 作者:行者123 更新时间:2023-12-02 04:08:31 25 4
gpt4 key购买 nike

如何在命令行中利用环境变量格式化字符串?例如,我想 curl 并传递一些变量,即:

curl -X POST --data-urlencode 'payload={"text": "I want to print an environment variable here, eg a path: $PATH"}' https://someapi.com/

最佳答案

简单的答案是更改您使用的引号类型:

curl -X POST --data-urlencode \
'payload={"text": "I want to print an environment variable here, eg a path: '"$PATH"'"}' \
https://someapi.com/

值得注意的是,这仍然在外部使用单引号(因此您不需要更改有效负载),但随后它结束单引号,开始 双引号,并将您的替换嵌入到这些双引号中(在结束它们并切换回单引号之前,可以在其中嵌入文字(而不是语法)双引号)。

这种方法的一个变体是使用不带引号的heredoc,as advised by @chepner in the comments,它避免了将语法引号混合到文档内容中的需要。 :

curl -X POST --data-urlencode @- https://someapi.com/ <<EOF
payload={"text": "I want to print an environment variable here, eg a path: $PATH"}
EOF

更好的答案是使用知道如何格式化 JSON 的工具; jq是一个广泛流行的选择。考虑以下示例:

text="I want to print an environment variable here, eg a path: \"$PATH\""
curl -X POST --data-urlencode @- https://someapi.com/ <<EOF
payload=$(printf '%s\n' "$text" | jq -R '{text: .}')
EOF

这样,即使您的环境变量包含反斜杠、文字引号、不可打印字符或其他可能出现的内容,也能保证有效的输出。

关于Bash:以字符串格式设置环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38135342/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com