如何在变量中返回程序的输出?

时间:2013-07-02 06:10:30

标签: bash

任何人都可以告诉我如何从命令行返回变量中程序的输出吗?

var = ./a.out params

我正在尝试从命令行运行此程序时将程序输出转换为变量。

4 个答案:

答案 0 :(得分:10)

要将程序输出保存到Unix shell中的变量stdout,无论编写的语言程序是什么,都可以使用类似的东西

var=`./a.out params`

或者

var=$(./a.out params)

请记住,不要在=运算符之前或之后添加空格。

答案 1 :(得分:1)

对于多行命令的输出,您可以这样做:

output=$(
#multiline multiple commands
)

或者:

output=$(bash <<EOF
#multiline multiple commands
EOF
)

示例:

#!/bin/bash
output="$(
./a.out params1
./a.out params2
echo etc..
)"
echo "$output"

答案 2 :(得分:0)

您可以通过stdout(如前所述)或从C程序的return函数中使用main()语句将值从程序传递到shell。下面的单行说明了两种方法:

echo -e '#include <stdio.h>\n int main() { int a=11; int b=22; printf("%d\\n", a); return b; }' | gcc -xc -; w=$(./a.out); echo $?; echo $w

输出:

22

11

变量a打印到stdout,变量bmain()中返回。在bash中使用$?来获取最近调用的命令的返回值(在本例中为./a.out)。

答案 3 :(得分:-1)

要补充answer from rasen,要将变量从程序内部传输到外部环境,您需要将其打印到stdout

使用另一个答案中提供的语法,只需获取stdout的所有输出,并将其放在shell环境变量var中。