【发布时间】:2014-09-01 16:15:50
【问题描述】:
以下循环在 Linux 和 Solaris 上的 bash 中完美运行,但在默认为 ksh 的 AIX 上失败:
while read -r line; do
var1=$(...)
var2=$(...)
echo "$var1 $var2"
done < <(lsvgfs `lsvg | grep -v rootvg`)
带有以下信息:
0403-057 第 11 行的语法错误:不应出现 `
【问题讨论】:
-
< <(lsvgfs `lsvg | grep -v rootvg`)是进程替换,是 BASH 特定的,在 ksh 中不支持。 -
我认为更有可能是现代的
<()结构不起作用,而不是重定向。嗯,我认为它是现代的,但我不能说它是什么时候添加的。 (参见this:“进程替换仅在支持 /dev/fd/N 特殊文件的 Unix 系统上可用,以便对已打开的文件描述符进行命名访问。” -
请始终包含您的
ksh版本(我猜您正在运行ksh88),因为这在ksh93中工作得很好。
标签: ksh