假设我有一个C程序,其计算结果为零或非零整数;基本上是一个计算结果为布尔值的程序。
我希望编写一个shell脚本,可以找出C程序是否评估为零。我目前正在尝试将C程序的返回值分配给shell脚本中的变量,但似乎无法这样做。我现在有;
#!/bin/sh
variable=/path/to/executable input1
我知道在shell脚本中分配值要求我们不要有空格,但我不知道另一种方法,因为运行它似乎评估为错误,因为shell将input1
解释为命令,不是输入。有没有办法可以做到这一点?
我也不确定如何检查C程序的返回值。我应该只使用if语句并检查C程序是否评估为等于零的值?
答案 0 :(得分:4)
这是非常基本的
#!/bin/sh
variable=`/path/to/executable input1`
或
#!/bin/sh
variable=$(/path/to/executable input1)
并从程序中获取返回代码
echo $?
答案 1 :(得分:1)
您可以使用iharob的answer中显示的反引号或$(...)
进行分配。
另一种方法是将零回报值解释为成功并直接评估(参见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