Bash输出到变量不起作用?

时间:2014-03-04 21:52:25

标签: bash stdout

我试图将命令集的输出设置为变量但是当我使用命令替换运行它时,该命令返回一个空行

[user@host bin]$ ./MyAppRead 4
Segmentation fault (core dumped)
[user@host bin]$ BALLS=$(./MyAppRead 4)
[user@host bin]$ echo $BALLS

[user@host bin]$

我期待将BALLS设置为"分段错误(核心转储)"但它是空白的?

- 编辑 -

已更改以反映以下建议。但仍然空白

[user@host bin]$ ./MyAppRead 4
Segmentation fault (core dumped)
[user@host bin]$ BALLS=$(./MyAppRead 4 2>&1)
[user@host bin]$ echo $BALLS

[user@host bin]$

2 个答案:

答案 0 :(得分:5)

$()捕获标准输出,而不是标准错误。分段错误错误将转为标准错误。

如果你想要两者,你可以这样捕捉:

BALLS=$(./MyAppRead 4 2>&1)

答案 1 :(得分:4)

分段错误是一个信号,如果你编程得到它,它将被终止,bash会将分段错误信息打印到shell( not program )stderr。

您可以通过使用陷阱捕获分段故障信号来获得此输出。将其写入文件script.sh

/bin/bash
# script.sh
trap "Segmentation fault (core dumped)" 11
./MyAppRead 4 

然后执行此

chmod +x script.sh
BALLS=$(./script.sh 2>&1)
echo $BALLS