Не удалось перенаправить вывод ввода-вывода в FreeBsd

У меня есть это:

$ 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 

В Linux с bash по умолчанию в качестве оболочки это отлично работает.

Как это исправить?

В сценарии у меня есть следующее:

 #!/usr/local/bin/bash # other stuff 

3 Solutions collect form web for “Не удалось перенаправить вывод ввода-вывода в FreeBsd”

bash поддерживает это, но вы явно указываете, что ваша текущая оболочка не bash , а скорее sh , которая является другой оболочкой.

bash поддерживает >& , однако /bin/sh не делает (по крайней мере, не для перенаправления файла).

Ваша командная строка интерпретируется /bin/sh перед передачей в sudo и bash .

Я не могу проверить это на bash (но он работает с другими оболочками) – вы можете попробовать использовать опцию -c с цитируемой строкой:

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

Правильный синтаксис:

 sudo my_script.sh some_arg > /dev/null 2>&1 
Linux и Unix - лучшая ОС в мире.