我试图使用进程替换进行while循环。在bash中工作的进程替换是zsh
logFile=$1
declare -A frequencyMap
while read line
do
name=$(echo $line | awk '{print $11}')
if [ ${frequencyMap[$name]+_} ]
then frequencyMap[$name]=$(expr ${frequencyMap[$name]} + 1)
else frequencyMap[$name]=1
fi
done < <(zgrep 'PersonalDetails' $logFile)
for key in "${!frequencyMap[@]}"
do
echo "$key ${frequencyMap[$key]}"
done | sort -rn -k2
这在bash中正常工作,但不在zsh中。我得到这个错误:
test.sh: line 20: syntax error near unexpected token `<'
test.sh: line 20: `done < <(zgrep 'Exception' $1)'
我使用的是zsh 4.3.10。
我如何得到这个在zsh中工作?
UPDATE:已经修改了问题,分享完整的代码
什么版本的'zsh',究竟是不是在那里工作? –
这是一个简单的例子。我在实际脚本的while循环中做了更多的事情。 – mindreader
'<(stuff)'是一种抨击。我怀疑它是在'zsh'中定义的。尝试命令替换'zgrep'异常'$ 1 |而......而不是。 –