./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
$
因为{ ...; }
不是子 shell,所以该变量仍然可用。
$ echo ${#foo}
19786
该警告来自 shell,您需要重定向 shell 的输出才能使其正常工作。在组中,甚至 shell 的输出也会被重定向(仅在该组内)。