2017-09-08 5 views
1

私は入力値を必要とするC++コードを持っています。私は自分のC++実行ファイルを自動的に実行するためのbashスクリプトを用意したいと思います。私の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; 
} 

cin>>r_sizeようCreate_router(argv[1],nodes)cin、があります。

事前に感謝します。

+0

ここに実際の質問がありますか? –

+0

私のbashスクリプトが動作しません。私はbashスクリプトの入力値をC++の実行可能ファイルに渡す方法を知らない –

+0

@JaysonZhang、どのようにbashスクリプトを呼び出すのですか? –

答えて

0

は、プログラムの入力を、$2変数にあるファイルにリダイレクトすることを意味します。

$2は、実際の入力データではなく、ファイル名である場合は、ここでは、文字列を使用する必要があります

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

やヒアドキュメントを:

./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 EXTですアンジオン。他の方法は、すべてのPOSIXシェルに移植可能です。

+0

ありがとうございました。 –

関連する問題