C++の実行ファイル./a.outはコマンドライン引数としてrankをとります.rankを0から10まで変えて./a.outを実行したい場合どのようにシェルスクリプトを書けばよいか,という質問です.
私は,以下のようにしました.
run.sh
1int rank=0 2for ((rank=0 ; rank<10; rank++)) 3do 4 ./a.out $rank& 5done 6wait
ただ,これでは正常にrankの値が渡されていないようです.プログラムではrankが全て0として処理されているようです.何が問題でしょうか.
なお,C++の中では,コマンドライン引数を次のように受け取っています.
main.cpp
1#include <cstdlib> 2 3int main(int argc, char* argv[]){ 4 int rank = atoi( argv[1] ); 5 hogehoge 6}
環境
CentOS, Bash
追記
問題を簡潔にするために,shellscriptの一部だけを取り出していましたが,問題のshellscriptの全容は以下です.以下のコードでrank引数がうまくいかない理由を考えているのです.
shell.sh
1int cnt=0; 2int noise_level=0; 3int dataset_number=0; 4int sample_size=100; 5int rank=5; 6for ((i=0 ; i<sample_size; i++)) 7do 8for ((j=0 ; j<i+1 ; j++)) 9do 10 cnt=$((cnt+1)); 11 if [ $cnt = 75 ]; then 12 wait 13 cnt=0; 14 fi 15 echo $((rank)); 16 ./a.out 0 0 opt $i $j $rank& 17done 18done 19wait 20
回答3件
あなたの回答
tips
プレビュー