我发现这个脚本:可变重定向在bash与ksh的
#!/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
如果我这样做in bash:
readvar ./test.txt _127_0_0_1
我得到的输出:(声明在ksh中不工作,所以我用排版取代它)
kees
但是如果我做同样的事情在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 版本SH(AT&T研究所)93u 2011-02-08' – azbc