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

관련 정보