字符串求值不起作用

字符串求值不起作用

我在 shell 脚本中有以下数组:

#! usr/bin/bash

schemaPrefix=("aos")
tables_aos=("A" "B" "C")
colnames_aos=("id" "id" "id")

for j in "${!schemaPrefix[@]}"; do

aschema=${schemaPrefix[j]}
schema=$aschema
eval tables=tables_$aschema
echo ${tables[@]}
done

此代码应显示:

A B C

但是,它显示:

tables_aos

我做错了什么?谢谢。

答案1

在 bash 版本 > 4.3 中,你可以将tables变量声明为名称引用

#! /usr/bin/bash

schemaPrefix=("aos")
tables_aos=("A" "B" "C")

declare -n tables

for j in "${!schemaPrefix[@]}"; do
  aschema=${schemaPrefix[j]}
  tables=tables_$aschema
  echo "${tables[@]}"
done

循环可以更简单地编写,而无需间接

for aschema in "${schemaPrefix[@]}"; do
  tables=tables_$aschema
  echo "${tables[@]}"
done

相关内容