curl 尝试允许动态bash var为提示符,但转义字符不工作的任何想法?

e0uiprwp  于 2022-11-13  发布在  其他
关注(0)|答案(1)|浏览(159)

尝试允许动态bash var为提示符,但转义字符不工作的任何想法?

output=$(curl https://api.openai.com/v1/images/generations \
      -H 'Content-Type: application/json' \
      -H "Authorization: Bearer $OPENAI_API_KEY" \
      -d '{
        "prompt": "$prompt",
        "n": 1,
        "size": "1024x1024"
      }'

尝试转义字符,但出现错误,请帮助我允许curl请求中的bash vars。

svmlkihl

svmlkihl1#

“-d”(--data)值前后的单引号防止变量展开。
请注意,我们对json中的其他双引号进行了转义,以便在运行命令时显示它们。我假设您希望它们出现在那里,因此使用了单引号。
您可以沿着这些思路做一些事情(我喜欢使用长版本的选项来显示参数在脚本中的作用)。

$ prompt="A cute baby sea otter"
$ OPENAI_API_KEY=S0MeCo0lk3y

$ output=$(curl https://api.openai.com/v1/images/generations \
  --header "Content-Type:application/json" \
  --header "Authorization: Bearer ${OPENAI_API_KEY}" \
  --data "{ \"prompt\":\"${prompt}\",\"n\": 1,\"size\": \"1024x1024\"}")

发送以下内容:

curl https://api.openai.com/v1/images/generations --header Content-Type:application/json --header 'Authorization: Bearer S0MeCo0lk3y' --data '{ "prompt":"A cute baby sea otter","n": 1,"size": "1024x1024"}'

checkout https://mywiki.wooledge.org/BashFAQ/050,因为它可能会对您正在尝试做的事情有所帮助。

相关问题