【发布时间】:2017-08-18 17:55:23
【问题描述】:
我找到了这个脚本:
#!/bin/bash
readvar () {
while read -r line
do
declare "$line"
done < "$1"
echo ${!2}
}
这里: Bash Read Array from External File
我有一个名为 test.txt 的文件:
_127_0_0_1=kees
如果我在 bash 中这样做:
readvar ./test.txt _127_0_0_1
我得到了输出:
kees
但是,如果我在 ksh 中做同样的事情, (声明在 ksh 中不起作用,所以我用排版替换了它。) :
#!/bin/ksh
readvar () {
while read -r line
do
typeset "$line"
done < "$1"
echo ${!2}
}
readvar ./test.txt _127_0_0_1
我得到了输出:
$ ./test.sh
./test.sh: syntax error at line 8: `2' unexpected Segmentation fault: 11
这是为什么呢?我怎样才能让它在 ksh 中工作? (就此而言,ksh93)
【问题讨论】:
-
$ ksh --version version sh (AT&T Research) 93u 2011-02-08
标签: bash variables reference ksh