Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash输出到变量不工作?_Bash_Stdout - Fatal编程技术网

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上运行得很好。但很高兴知道未来的用途