n***s 发帖数: 287 | 1 我需要写个简单的C++程序test.cpp, 如
int main() {
int a;
double b;
string c;
// do something about a, b, c
cout << a << endl;
cout << b << endl;
cout << c << endl;
return 0;
}
比如编译之后的executable叫test.out,
然后需要在一个bash script中运行test.out, 我想在bash中定义
三个变量A, B, C, 运行完test.out之后就立即把abc的值赋给ABC,
两个问题:
how to make variable B store a floating point number ??
how to pass values of a,b,c to A,B,C in bash ??
我bash比较外行,不知道这个该怎么做?或者cpp程序也要做相应
调整?还请高人指点,包子答谢! | C****i 发帖数: 1776 | 2 shell是解释形语言,变量不需要明确定义,整型浮点型无所谓。
shell获得运行程序的返回值真假,可以用变量 $?
如果要在shell和程序之间传递变量,可以考虑使用管道或者重定向
把程序的标准输出 stdout重定向到一个shell变量,反之亦然。
请自行搜索解决方案
【在 n***s 的大作中提到】 : 我需要写个简单的C++程序test.cpp, 如 : int main() { : int a; : double b; : string c; : // do something about a, b, c : cout << a << endl; : cout << b << endl; : cout << c << endl; : return 0;
| w***g 发帖数: 5958 | 3 bash不能进行浮点运算,如果需要的话得重定向到bc. 你这个情况估计可以这么搞:
./test | while true
do
read A
read B
read C
在这里用ABC
done
【在 n***s 的大作中提到】 : 我需要写个简单的C++程序test.cpp, 如 : int main() { : int a; : double b; : string c; : // do something about a, b, c : cout << a << endl; : cout << b << endl; : cout << c << endl; : return 0;
| c********t 发帖数: 27 | 4 1)
B=`echo "scale=4;4/3"| bc`
echo $B
1.3333
2)
#include
getenv and setenv
man getenv
man setenv
Note: Do not modify strings returned from getenv; they are pointers to
data that belongs to the system.
Or If you want to look into it.
#include
#include
int main(int argc, char *argv, char *envp[]){
while(1){
printf("%s\n", envp++);
}//segfault here
} | n***s 发帖数: 287 | 5 Thanks, Bao Zi sent.
Actually I also found, if running test.out pops up one number on screen,
B=$(echo `./test.out`)
can also pass the number to B.
But I don't know how to make it work if two numbers pop up and I want
to pass them to A and B .... any idea? |
|