我有一个需要输入值的c ++代码。我想有一个bash脚本来自动运行我的c ++可执行文件。我的bash脚本如下:
#!/bin/bash
g++ freshness.cpp -g -o prob
for((i=0;i<30;i++))
{
./prob<$2 ../../data/new_r.txt ../../data/new_p.txt ../../data /t_$1.txt >> result.txt
}
./cal result.txt
rm result.txt
我的 main.cpp 如下:
int main(int argc,char*argv[])
{
map<int, struct Router> nodes;
cout<<"creating routers..."<<endl;
Create_router(argv[1],nodes);
cout<<"creating topology..."<<endl;
LoadRouting(argv[2],nodes);
cout<<"simulating..."<<endl;
Simulate(argv[3],nodes);
return 0;
}
cin
中有Create_router(argv[1],nodes)
,例如cin>>r_size
;
非常感谢提前。
答案 0 :(得分:0)
./prob < $2
表示将程序输入重定向到名称在$2
变量中的文件。
如果$2
是实际的输入数据,而不是文件名,那么你应该使用here-string:
./prob <<< "$2" ../../data/new_r.txt ../../data/new_p.txt ../../data /t_$1.txt >> result.txt
或here-doc:
./prob <EOF ../../data/new_r.txt ../../data/new_p.txt ../../data /t_$1.txt >> result.txt
$2
EOF
或将输入传递给程序:
printf "%s\n" "$2" | ./prob ../../data/new_r.txt ../../data/new_p.txt ../../data /t_$1.txt >> result.txt
here-string方法最简单,但它是bash
扩展名。其他方法可移植到所有POSIX shell。