我有以下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上复制了上面的源代码并且它有效。但是当我从脚本文件运行它时,我得到了上述错误。
我缺少什么
答案 0 :(得分:0)
流程替换(<()
)是bash
- ism,不是由POSIX定义的。
因此,当您尝试使用sh
(可能是dash
?)而不是bash
而在脚本内运行时,这会导致语法错误。
您可以将脚本的shebang设置为#!/usr/bin/env bash
以获取bash
解释的脚本,并使流程替换工作。