很难为这个找到一个标题: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
在循环中,我想创建一个名为content from
$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)
关于linux - 用其他变量的名称创建变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20976304/