gpt4 book ai didi

bash - 如何在 bash curl 命令中使用提示中的变量?

转载 作者:行者123 更新时间:2023-11-29 09:26:15 26 4
gpt4 key购买 nike

我正在尝试编写一个脚本来设置 Rackspace 云服务器,但我在其中的一个方面遇到了问题。当脚本运行时,它会询问用户几个问题以获取用户名和 api key 。然后我在 curl 命令中使用这些值。 curl 命令的输出也需要分配给一个变量。这就是我所拥有的——我想我只是缺少一个语法错误。这不是整个脚本,它只是我遇到问题的唯一部分。

#!/bin/bash

# Ask questions to get login creds
read -p "Rackspace Username? " username
read -p "Rackspace API Key? " apikey

# Get Rackspace token
echo "Getting token..."
token=$(curl -s -X POST https://auth.api.rackspacecloud.com/v2.0/tokens \
-d '{ "auth":{ "RAX-KSKEY:apiKeyCredentials":{ "username":"$username", "apiKey":"$apikey" } } }' \
-H "Content-type: application/json" \
| python -mjson.tool \
| python -c 'import sys, json; print json.load(sys.stdin)["access"]["token"]["id"]')
echo "...done!"

.....

最佳答案

下面一行的问题是 $username$apikey 在单引号内并且 bash 变量没有在单引号内求值:

-d '{ "auth":{ "RAX-KSKEY:apiKeyCredentials":{ "username":"$username", "apiKey":"$apikey" } } }' \

要修复它,请在 bash 变量之前结束单引号字符串,然后再启动它:

-d '{ "auth":{ "RAX-KSKEY:apiKeyCredentials":{ "username":'"$username"', "apiKey":'"$apikey"' } } }' \

如果您需要字符串中的文字双引号才能正常工作,那么我们必须将它们添加到字符串的单引号部分内:

-d '{ "auth":{ "RAX-KSKEY:apiKeyCredentials":{ "username":"'"$username"'", "apiKey":"'"$apikey"'" } } }' \

关于bash - 如何在 bash curl 命令中使用提示中的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22106028/

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