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がデフォルトシェルであるLinuxでうまくいきます。

どうすれば修正できますか?

スクリプトには次のものがあります。

#!/usr/local/bin/bash

# other stuff

答え1

bashこれは実際にはサポートされていますが、現在のシェルではなくbash別のshシェルであることを明示的に指定します。

答え2

bash>&しかし、そうでは/bin/shありません(少なくともファイルにリダイレクトしません)。

あなたのコマンドラインは次のように解釈されます。/bin/sh 今後sudoとに渡されますbash

これをテストすることはできませんが(他のシェルでは動作します) - 引用符付き文字列を使用してオプションを試すことbashができます。-c

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

答え3

正しい構文は次のとおりです。

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

関連情報