为什么分配后重定向不起作用?

为什么分配后重定向不起作用?

./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 的输出也会被重定向(仅在该组内)。

相关内容