할당 후 리디렉션이 작동하지 않는 이유는 무엇입니까?

할당 후 리디렉션이 작동하지 않는 이유는 무엇입니까?

./NulFileNUL을 포함합니다. 명령 확장은 NUL을 제거할 때 경고를 인쇄합니다. 경고를 억제하는 방법이 있습니까?

리디렉션이 작동하지 않는 이유는 무엇입니까?

$ filecontent="$(cat ./NulFile)" 1>/dev/null 2>&1
bash: warning: command substitution: ignored null byte in input

답변1

명령 그룹에 넣고 해당 그룹의 출력을 리디렉션합니다.

$ foo=$(cat /bin/sleep)
bash: warning: command substitution: ignored null byte in input
$ { foo=$(cat /bin/sleep); } 2>/dev/null
$

{ ...; }서브쉘이 아니기 때문에 변수를 계속 사용할 수 있습니다.

$ echo ${#foo}
19786

경고는 셸에서 발생하므로 이를 작동시키려면 셸의 출력을 리디렉션해야 합니다. 그룹 내에서는 쉘의 출력도 리디렉션됩니다(그룹 내에서만).

관련 정보