谁能告诉我如何从命令行以变量形式返回程序的输出?
var = ./a.out params
我试图在从命令行运行程序时将程序的输出转换为变量。
要将程序输出保存到stdout
Unix shell 中的变量中,无论使用哪种语言程序编写,您都可以使用类似这样的东西
var=`./a.out params`
或这个
var=$(./a.out params)
记住不要在运算符之前或之后放置空格=
。
对于多行命令的输出,您可以这样做:
output=$(
#multiline multiple commands
)
或者:
output=$(bash <<EOF
#multiline multiple commands
EOF
)
例子:
#!/bin/bash
output="$(
./a.out params1
./a.out params2
echo etc..
)"
echo "$output"
为了补充rasen 的答案,要将变量从程序内部获取到外部环境,您需要将其打印到stdout
.
使用另一个答案中提供的语法只需从所有输出中获取stdout
并将其放入 shell 环境变量var
中。
您可以通过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
打印到stdout
并b
返回变量main()
。在 bash 中使用$?
以获取最近调用的命令的返回值(在这种情况下./a.out
)。