任何人都可以告诉我如何从命令行返回变量中程序的输出吗?
var = ./a.out params
我正在尝试从命令行运行此程序时将程序输出转换为变量。
答案 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
,变量b
在main()
中返回。在bash中使用$?
来获取最近调用的命令的返回值(在本例中为./a.out
)。
答案 3 :(得分:-1)
要补充answer from rasen,要将变量从程序内部传输到外部环境,您需要将其打印到stdout
。
使用另一个答案中提供的语法,只需获取stdout
的所有输出,并将其放在shell环境变量var
中。