2
我想写一个脚本,将设置一个Rackspace云服务器,我遇到了一个方面的问题。脚本运行时,会询问用户几个问题以获取用户名和API密钥。然后我在curl命令中使用这些值。 curl命令的输出也需要分配给一个变量。这是我的 - 我在想这只是一个语法错误,我错过了。这不是整个剧本,它只是我遇到麻烦的唯一部分。如何在bash 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”''改为'“'$ username'”',并且对于apikey也是如此。 – ryanpitts1
@ ryanpitts1很高兴工作。为了最大的安全性,它应该是''''$ username''“'。这提供了curl看到的字面双引号。它还会导致bash评估双引号字符串中的变量,如果空格应该出现在变量的值中,这很重要。正如你在评论,我加入了一个最终版本,其中包含了这个。 – John1024
好的,太好了,谢谢你的解释! – ryanpitts1