【发布时间】:2019-07-03 23:46:18
【问题描述】:
我在交互式 shell 中执行 bash 命令
./somescript.sh
输出为
OS platform is: linux2
killall agent
agent: no process killed
第三行来自标准错误。
但是当我在子shell中执行时
var=$('./somescript.sh' 2>&1)
agent: no process killed
OS platform is: linux2
killall agent
为什么代理:没有进程被杀死现在在第一行打印? 我怎样才能使它们保持一致?
编辑:
但是,当我这样做时,
var=$('./somescript.sh' 1>&2)
我可以看到它在 bash 调试模式下以正确的顺序给出输出。但它没有存储在变量 var 中。
【问题讨论】:
-
您需要更改 ./somescript.sh 以从正在写入 stderr 的命令重定向。
-
@StephenC 我猜,你是说要像 1>&2 那样做,对吧?在那种情况下,我如何打印标准错误?变量将只包含标准输出对吗?不是标准错误..
-
如果没有看到脚本并了解它的作用,我无法回答这些问题,
-
“但是,当我这样做时,
var=$('./somescript.sh' 1>&2)由 StephenC 建议” - 这不是我的建议!我实际上说的是您需要更改 脚本。
标签: bash shell stdout stderr io-redirection