在bash中创建嵌套数组变量时替换错误



我不知道自己在做什么,我的脚本需要一些帮助。

$ ./mysql.sh LOCALIP 'SELECT LOCALIP FROM Host'

mysql.sh

#!/bin/bash
source $PWD/data/login
mapfile -t "$1" < <(mysql -N ""$DB"" -h""$HOST"" -u""$USER"" -p""$PASS"" -se "$2")
echo ${$1[0]}
echo ${$1[1]}
echo ${$1[2]}
echo ${$1[3]}
fi

输出

[シ]owner@gwpi ~/scriptdir $./mysql.sh LOCALIP 'SELECT LOCALIP FROM Host'
./mysql.sh: line 10: ${$1[0]}: bad substitution

只需在此处用var替换变量$1。它有效。

$ mapfile -t var < <(mysql -N ""$DB"" -h""$HOST"" -u""$USER"" -p""$PASS"" -se "$2")
$ echo" ${var[@]}"

原始脚本有两个问题。

  • 您不能以这种方式更改$1参数。正确的样式指的是
  • 应该更好地使用比$1更有意义的变量

最新更新