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