Bash Printf颠倒了参数的顺序

Alv*_*lvy 2 bash printf

我遇到了一个奇怪的场景,我很困惑

$ printf "%s:%s\n" "$(date)" "$(python -V)"
Python 2.7.10
Thu 10 Oct 2019 19:05:11 EDT:
Run Code Online (Sandbox Code Playgroud)

而其他命令我得到了预期的结果

$ printf "%s:%s\n" "$(date)" "$(hostname)"
Thu 10 Oct 2019 19:04:53 EDT:alvy.local
Run Code Online (Sandbox Code Playgroud)

Joh*_*ica 6

python -V打印到stderr。使用2>&1的输出重定向到标准输出,因此它可以被捕获。

$ printf "%s:%s\n" "$(date)" "$(python -V 2>&1)"
Run Code Online (Sandbox Code Playgroud)