5

谁能告诉我如何从命令行以变量形式返回程序的输出?

var = ./a.out params

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

4

4 回答 4

12

要将程序输出保存到stdoutUnix shell 中的变量中,无论使用哪种语言程序编写,您都可以使用类似这样的东西

var=`./a.out params`

或这个

var=$(./a.out params)

记住不要在运算符之前或之后放置空格=

于 2013-07-02T06:14:21.257 回答
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"
于 2015-06-15T22:55:11.260 回答
0

为了补充rasen 的答案,要将变量从程序内部获取到外部环境,您需要将其打印到stdout.

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

于 2013-07-02T07:13:01.620 回答
0

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

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打印到stdoutb返回变量main()。在 bash 中使用$?以获取最近调用的命令的返回值(在这种情况下./a.out)。

于 2013-07-02T07:58:02.260 回答