作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试想出一个解决方案来为脚本执行一些数学函数,因为 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/
我是一名优秀的程序员,十分优秀!