加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

将值从C程序返回到bash脚本

发布时间:2020-12-13 18:57:53 所属栏目:Linux 来源:网络整理
导读:我有一个C程序(在Linux上)计算双重结果,我想写一个bash脚本,运行程序可变次数,并为我平均这些结果.为简单起见,请考虑以下代码: main.cpp中: int main() { cout script.sh: sum = 0num = $1for((i = 0; i 有没有一种简单的方法可以将程序的结果传回bash脚

我有一个C程序(在Linux上)计算双重结果,我想写一个bash脚本,运行程序可变次数,并为我平均这些结果.为简单起见,请考虑以下代码:

main.cpp中:

int main() {
    cout << "Some other stuffn";

    double result = foo();

    return 0;
}

script.sh:

sum = 0
num = $1
for((i = 0; i < $num; i++)); do
    result = ./a.out;  #store the result somehow?
    sum = $sum + $result
done
avg = $sum / $num
echo "Average: " $avg

有没有一种简单的方法可以将程序的结果传回bash脚本?我读到了使用退出代码,但返回类型是一个双,所以我认为这不会起作用.从字符串输出中解析值是不实用的,因为程序具有其他终端输出.

最佳答案
UNIX的方法是在stderr上写入非必要数据并在stdout上写入实际结果.这样,你就可以做到

int main() {
    cerr << "This is output that won't be captured." << endl;
    cout << "3.141592" << endl; 
}

并使用命令替换来捕获它:

result=$(./a.out)

一个更丑陋的方法是不需要更改输出就是写入另一个文件描述符:

int main() { 
    char* foo = "3.141592n";
    write(42,foo,strlen(foo));
}

这将让您捕获输出:

result=$(./a.out 42>&1 > /dev/null)

请注意,您的shell脚本有几个语法错误.尝试shellcheck自动整理其中的许多内容,并随时发布有关您无法解决的问题的问题.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读