[英]create variable with name of other variable
很難找到這個的標題:D
我有以下代碼:
data=( "slots" "npcs" )
for i in "${data[@]}"
do
"$i"=$(mysql_exec "SELECT $i FROM orders WHERE order_id = $order") # slots returns 5 and npcs returns 1
done
在循環中,我想創建一個變量,其名稱為$i
。 因此,它應該創建一個名為slots (content: 5)
和npcs (content: 1)
的變量
希望您能理解我的問題:P
錯誤:
./install: Line 16: slots=5: command not found.
./install: Line 16: npcs=1: command not found.
您可以使用declare
命令動態創建變量名稱。
data=( "slots" "npcs" )
for i in "${data[@]}"
do
declare "$i=$(mysql_exec "SELECT $i FROM orders WHERE order_id = $order")" # slots returns 5 and npcs returns 1
done
read
命令也可以與過程變電站一起使用
read $i < <(mysql_exec "SELECT $i FROM orders WHERE order_id = $order")
但是,請考慮兩種方法是否真的比簡單編寫更好
grab_from_sql () {
mysql_exec "SELECT $1 FROM orders WHERE order_id = $2"
}
slots=$(grab_from_sql slots $order)
npcs=$(grab_from_sql npcs $order)
如果您使用bash 4,則可以使用關聯數組:
data=(slots npcs)
declare -A res
for i in "${data[@]}"; do
res[i]=$(mysql …)
done
如果您沒有支持關聯數組的shell,那么您將無法使用shell做到這一點。 考慮使用腳本語言。 您可以使用awk
,如果其他所有方法都失敗,則它支持關聯數組。 在awk
使用system
功能來執行mysql
命令。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.