从命令返回错误脚本

时间:2016-10-16 22:15:13

标签: linux bash shell sh

我有以下shell脚本从命令中读取数据。

while read _ host ip time _; do
    echo $host
done < <(traceroute yahoo.fr)

上面的源代码返回脚本错误

./traceroute_launch: line 33: syntax error near unexpected token `<'
./traceroute_launch: line 33: `done < <(traceroute yahoo.fr)'

我在shell上复制了上面的源代码并且它有效。但是当我从脚本文件运行它时,我得到了上述错误。

我缺少什么

1 个答案:

答案 0 :(得分:0)

流程替换(<())是bash - ism,不是由POSIX定义的。

因此,当您尝试使用sh(可能是dash?)而不是bash而在脚本内运行时,这会导致语法错误。

您可以将脚本的shebang设置为#!/usr/bin/env bash以获取bash解释的脚本,并使流程替换工作。