使用进程替换“在预期令牌附近的语法错误”

时间:2016-02-15 21:42:46

标签: bash shell process-substitution

这是一个令人尴尬的问题,但我找不到错误。我正在尝试进行流程替换。这是我的代码

while read compareFile1 <&3 && read compareFile2 <&4; do 
echo compareFile1
echo compareFile2
done 3< <(tail -n+4 test2.txt) 4< <(tail -n+4 test2.txt)

但错误是,

sh.sh: line 7: syntax error near unexpected token `<'
sh.sh: line 7: `done 3< <(tail -n+4 test2.txt) 4< <(tail -n+4 test2.txt)

任何可以提供帮助吗?

1 个答案:

答案 0 :(得分:3)

进程替换不是POSIX sh中的可用功能(#!/bin/sh,也是sh yourscript调用的);尽管标记了这个问题&#34; bash&#34;,您仍然使用非bash shell清楚地执行您的脚本(或以其他方式进入可移植性模式,与set -o posix一样)。

使用bash代替;因此,如果手动指定解释器,则将#!/bin/bash放在脚本的开头,或者使用bash yourscript调用它。