很难为这个找到一个标题: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/

10-11 15:50