./NulFile
NULを含みます。コマンド拡張は、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
警告はシェルで発生するため、これを機能させるにはシェルの出力をリダイレクトする必要があります。グループ内では、シェルの出力もリダイレクトされます(グループ内のみ)。