Bash输出到变量不工作?
我试图将命令集的输出获取到一个变量,但当我使用命令替换运行它时,该命令返回一个空行Bash输出到变量不工作?,bash,stdout,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设置为“分段错误(堆芯转储)”,但它是空的 -编辑- 更改以反映以下建议。但还是一无所获 [us
[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]$
$()
捕获标准输出,而不是标准错误。分段错误将变为标准错误
如果两者都需要,可以通过以下方式捕获:
BALLS=$(./MyAppRead 4 2>&1)
分段错误是一个信号,如果您的程序得到它,它将被终止,bash将把分段错误消息打印到shell(非程序)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
在上面进行了编辑,以显示带有建议的新命令,但仍然是有意义的空白输出。谢谢实际上,我决定触发一条成功的消息,而不是一个segfault,这在stdout上运行得很好。但很高兴知道未来的用途