gpt4 book ai didi

c++ - 如何将 C++ 程序的输出用作 Bash 脚本中的变量

转载 作者:太空狗 更新时间:2023-10-29 21:04:16 25 4
gpt4 key购买 nike

我正在尝试想出一个解决方案来为脚本执行一些数学函数,因为 bash 显然不能做除整数数学之外的任何事情(或者它甚至可以这样做吗?)。

我要编写的脚本需要编写一系列宏,这些宏最终将用于模拟程序。我目前只是尝试输出用作宏参数的粒子源位置。

我写的 C++ 程序非常简单,它接收 i 并输出 x 和 y:

#include <iostream>
#include <math.h>

using namespace std;

int main()
{
double i;
double theta = 11 * (3.1415926535897932384626/180);

cin >> i;

double b = 24.370;

double y = (b/i)*sin(theta);
double x = (b/i)*cos(theta);

cout << x << " " << y << endl;

return 0;
}

我正在编写的脚本输出了一堆与我尝试创建的宏有关的内容,但我卡住的行(标记为 (1) )需要执行类似的操作。 ..

for i in {1..100}
do
echo "./a.out" #calling the C program
echo "$i" #entering i as input

x = first output of a.out, y = second output a.out #(1) Confused on how to do this part!

echo -n "/gps/position $x $y 0 27.7 cm" > mymacro.mac

完成

我知道必须有一个非常简单的方法来做到这一点,但我不确定该怎么做。我基本上只需要使用 c 程序的输出作为脚本中的变量。

最佳答案

您可能应该考虑将 $i 作为变量传递给您的 c++ 程序,并使用 argv 读取它(this 可能会有帮助)。这很可能是执行此操作的“正确”方法。然后你可以将它用于 bash:

#!/bin/bash
IFS=' ';
for i in {1..100}
do
read -ra values <<< `./a.out $i`
x=${values[0]}
y=${values[1]}
echo -n "/gps/position $x $y 0 27.7 cm" > mymacro.mac
done

你确定你想要 > mymacro.mac 而不是 >> mymacro.mac (如果前者在循环内,只有最后一个值是写入文件mymacro.mac

关于c++ - 如何将 C++ 程序的输出用作 Bash 脚本中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11571572/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com