2017-09-08 34 views
1

我有一個需要輸入值的C++代碼。我想有一個bash腳本來自動運行我的C++可執行文件。我的bash腳本如下:將輸入值從bash腳本傳遞給C++可執行文件

#!/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; 
} 

有在Create_router(argv[1],nodes)一個cin,像cin>>r_size;

非常感謝提前。

+0

這裏有一個實際的問題嗎? –

+0

我的bash腳本不起作用。我不知道如何將輸入值從bash腳本傳遞給C++可執行文件 –

+0

@JaysonZhang,如何調用bash腳本? –

回答

0
./prob < $2 

表示將程序的輸入重定向到名稱在$2變量中的文件。

如果$2是實際輸入數據,而不是一個文件名,那麼你應該使用下面的字符串:

./prob <<< "$2" ../../data/new_r.txt ../../data/new_p.txt ../../data /t_$1.txt >> result.txt 

或這裏-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 

這裏的字符串方法是最簡單的,但它是一個bash分機ension。其他方法可移植到所有POSIX shell。

+0

非常感謝。 –