在unix shell脚本中分配C程序的输出并检查该值

时间:2016-02-05 15:46:08

标签: shell unix

假设我有一个C程序,其计算结果为零或非零整数;基本上是一个计算结果为布尔值的程序。

我希望编写一个shell脚本,可以找出C程序是否评估为零。我目前正在尝试将C程序的返回值分配给shell脚本中的变量,但似乎无法这样做。我现在有;

#!/bin/sh
variable=/path/to/executable input1

我知道在shell脚本中分配值要求我们不要有空格,但我不知道另一种方法,因为运行它似乎评估为错误,因为shell将input1解释为命令,不是输入。有没有办法可以做到这一点?

我也不确定如何检查C程序的返回值。我应该只使用if语句并检查C程序是否评估为等于零的值?

2 个答案:

答案 0 :(得分:4)

这是非常基本的

#!/bin/sh
variable=`/path/to/executable input1`

#!/bin/sh
variable=$(/path/to/executable input1)

并从程序中获取返回代码

echo $?

答案 1 :(得分:1)

您可以使用iharobanswer中显示的反引号或$(...)进行分配。

另一种方法是将零回报值解释为成功并直接评估(参见manual):

if /path/to/executable input1; then
    echo "The return value was 0"
else
    echo "The return value was not 0"
fi

使用一个小的虚拟程序进行测试,如果输入“是”,则退出0,然后退出1:

#!/bin/bash

var="$1"

if [[ $var == yes ]]; then
    exit 0
else
    exit 1
fi

测试:

$ if ./executable yes; then echo "Returns 0"; else echo "Doesn't return 0"; fi
Returns 0
$ if ./executable no; then echo "Returns 0"; else echo "Doesn't return 0"; fi
Doesn't return 0

如果不使用Bash:if [ "$var" = "yes" ]; then