echo/printf 中的 Bash 命令替换不会在同一行打印结果?

问题描述 投票:0回答:1

可重现的示例

考虑这个例子:

#!/usr/bin/env bash
echo "[Status] $(killall --wait example)"

预期输出:

[状态]示例:未找到进程

实际结果(顺序错误,有2行):

示例:未找到进程

[状态]

解决方法

result=$(killall --wait example 2>&1)
echo "[Status] ${result}"

问题

  1. 在可重现的示例中,输出为何不在同一行?
  2. 除了解决方法之外,还有什么方法可以等待命令替换的结果并将其打印在同一行上(例如,也许通过 process replacementpipes)?
bash command printf echo substitution
1个回答
0
投票

改变:

echo "[Status] $(killall --wait example)"

进入:

echo "[Status] $(killall --wait example 2>&1)"

© www.soinside.com 2019 - 2024. All rights reserved.