在shell脚本中获取进程的返回值

时间:2016-07-22 18:32:08

标签: bash shell

我有一个C程序,比如hello_world。 main函数返回int。我可以在shell脚本中访问和使用此返回值吗?

这是C代码。我写了一个非常简化的程序版本。实际代码是1.2K行。

/*hello_world.c*/
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
    int i = 0;
    if (argc == 2) {
        i = atoi(argv[1]);
        printf("Hello World - %d\n", i);
        return 0;
    }
    else return -1;
}

这是运行编译上述代码后生成的可执行文件的bash脚本。我正在使用GCC 4.1.2并使用gcc -o hello_world hello_world.c

进行编译
#!/bin/bash
ret=hello_world 31 # this gives a `command not found` error
if [ ret -eq 0 ]; then
    echo "success"
fi

有什么办法可以从脚本中访问返回的值吗?

1 个答案:

答案 0 :(得分:4)

这是一件非常简单的事情

hello_world 31
if [ $? -eq 0 ];
then
    echo "success"
fi

但是如果你想捕获程序的输出

output=$(hello_world 31)

output=`hello_world 31`