【发布时间】:2015-03-12 12:32:54
【问题描述】:
我有 bash 脚本,我在其中询问用户一些输入,然后我想调用 C 程序几次,并对返回值求和。请注意,我的 C 程序中的 main 函数也有一些 printf 语句,它返回一个整数值。这是我的 bash 脚本的一部分:
#!/bin/bash
encBER=0
// Some other code where I read the values from the user
for i in $frames;
do
tempEncBER=$(./enc_ber $bytes $snr $modulation $channel $alamouti)
encBER=$((encBER + tempEncBER))
done
echo "Total BER is:" $encBER
重点是我要求它执行10次,也就是说frames变量的值是10,但是执行了一次,出现语法错误,然后再次执行,最终的结果是encBER 的值为 0。它根本不在那里存储任何东西。如何在 C 程序的 main 函数中获取 return 语句的值并在 bash 中使用它?
【问题讨论】:
-
enc_ber是一个 C 程序这一事实根本不相关。 -
当您说C程序的“返回值”时,您的意思是在
main()末尾使用return返回什么?因为你所做的是存储程序发出的标准输出,这是完全不同的。 -
$frames的值在哪里设置? -
如果
frame的值为10,那么for i in $frames将恰好循环一次,而$i的值为10。 -
请注意,虽然
main()返回int,但操作系统只返回main()返回的int的最低字节值。所以return 257;来自int main()最终会以1出现在shell 中。