Bash

無法在 FreeBsd 中重定向 IO 輸出

  • June 14, 2017

我有這個:

$ 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

bash確實支持這一點,但是您明確聲明您目前的外殼不是bash,而是sh,這是一個不同的外殼。

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

您的命令行在傳遞給and/bin/sh 之前被解釋。sudo``bash

我無法對此進行測試bash(但它適用於其他 shell) - 您可以嘗試使用-c帶引號的字元串的選項:

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

引用自:https://unix.stackexchange.com/questions/370904