1
我在CentOS机器上测试了它,并且它很好地工作。现在在另一台机器上,我尝试了这个,它无法工作。什么是不正确的?Bash:在子外壳中的树方向工作不正确
command 2> >(tee stderr.log >&2) && exit
我收到此消息。
sh: syntax error near unexpected token `>'
有什么建议吗?
我在CentOS机器上测试了它,并且它很好地工作。现在在另一台机器上,我尝试了这个,它无法工作。什么是不正确的?Bash:在子外壳中的树方向工作不正确
command 2> >(tee stderr.log >&2) && exit
我收到此消息。
sh: syntax error near unexpected token `>'
有什么建议吗?
答案出现在错误消息中。传统的Bourne shell(sh
)不支持进程替换(例如>(command)
)。你没有使用Bash。您可以使用chsh
命令更改您的默认shell。
@hexacyanide是的,在很多系统上'sh'实际上是'bash',但'bash'中有几种兼容模式,它们通常取决于shell的启动方式。因此,即使'sh'在内部使用'bash',它的行为通常会与以'bash'调用它不同。如果这在脚本中,您应该通过将'#!/ bin/sh'中的shebang行更改为'#!/ bin/bash'来解决您的问题。 –
@hexacyanide:但是,请注意,在Ubuntu上'/ bin/sh'表示'dash',而不是'bash'。 – choroba
@hexacyanide:你在系统中使用什么操作系统或发行版? –