重定向内部和外部命令替换

重定向内部和外部命令替换

为什么命令替换之外的以下重定向不能抑制到 stderr 的输出:

OLD_DATE=$(date --date"three days ago")  2> /dev/null

而在命令替换中使用重定向的这个可以:

OLD_DATE=$(date --date"three days ago" 2> /dev/null)

答案1

看来是因为重定向适用于空的分配后的命令。例如,使用以下命令会得到相同的结果:

OLD_DATE=$(date --date"three days ago") true 2> /dev/null

这与没有分配的命令相同:

2> /dev/null

(是的,这是一个有效的命令行。)

相关内容