我正在尝试将一个脚本从BASH移植到ASH(Almquist SHell),并且遇到了间接引用的问题。以下功能
cmd() {
# first argument is the index to print (ie label)
arg=$1
# ditch the first argument
shift
# print the label (via indirect reference)
echo "${!arg}"
}
应该产生以下输出
cmd 1 one two three
one
cmd 2 one two three
two
cmd 3 one two three
three
这在BASH下按预期工作,但在ASH(或DASH)下运行时会生成“语法错误:错误替换”。这有用吗?如果没有,是否有使用间接引用的替代方法?
答案 0 :(得分:2)
您可以尝试eval
:
cmd() {
arg=$1
shift
eval "echo \$$arg"
}