无法在 FreeBsd 中重定向 IO 输出

无法在 FreeBsd 中重定向 IO 输出

我有这个:

$ echo $SHELL
/bin/sh

$ uname -a
FreeBSD  11.0-RELEASE-p8

这有效:

sudo bash my_script.sh some_arg

但这不是:

sudo bash my_script.sh some_arg >& /dev/null

错误:

-sh: Syntax error: Bad fd number

在默认 bash 作为 shell 的 Linux 中,这可以正常工作。

如何修复它?

在脚本中我有这个:

#!/usr/local/bin/bash

# other stuff

答案1

bash确实支持这一点,但您明确声明您当前的 shell 不是bash,而是sh,这是一个不同的 shell。

答案2

bash确实支持>&,但/bin/sh不支持(至少不支持重定向到文件)。

您的命令行被解释为/bin/sh 被传递到sudobash

我无法对此进行测试bash(但它适用于其他 shell) - 您可以尝试使用-c带引号字符串的选项:

sudo bash -c "my_script.sh some_arg >& /dev/null"

答案3

正确的语法是:

sudo my_script.sh some_arg > /dev/null 2>&1

相关内容