2017-05-07 2 views
3

私の質問は:私はCで書かれたプログラムを持って、それを起動するために、私はテキストファイルの引数を使用してプログラムを繰り返し実行することはできますか?

./program.exe var_1 ... var_n 

var_i番目を行うために使用していた数値と(ファイル名として使用)の文字列の両方です。 私は上記のコマンドを呼び出さなければならないたびに、var_i-thの異なる値で何度もプログラムを実行させる必要があります。

ファイル.txtファイル(または何か似た)種類

  • ./program.exe VAR_1 ... var_n #configuration 1
  • のを準備する方法はあります。
  • ./program.exe VAR_1 ... var_n #configuration N

と単一の呼び出しで、私はすべての設定を1つずつ実行し得るように、これを使用してプログラムの実行を作るには?

おかげ

+0

コンソール(MOでそれを入力したかのようにシェルスクリプトは、各ラインを実行しますそれ以下)。ですから、すべてのコマンドをファイルに書き込んだり、実行したりすることができます。あるいは、スクリプトがすべての構成パーミュテーションやそのようなものを生成する方法を探していますか? –

+0

Cの問題ではないため、Cタグを削除してください。 – alk

+0

関連するhttp://stackoverflow.com/q/10929453/694576 – alk

答えて

1

あなたはこのように、行ごとにカスタマイズされたパラメータリストを使用してファイルを作成することができる:

var_1 
var_2 
var_1 var_3 

次に、このようなbashの文は、仕事をするでしょう:

cat myFile.txt | xargs ./program.exe 
+1

私は次のように示唆しています: 'xargs -n 1 ./program.exe Cyrus

+1

この答えで示唆されているアプローチは、OPが尋ねることを実行しません - ' ./program.exe var_1 var_2 var_1 var_3'あなたの入力ファイルで、スペースと改行を同じように扱います。 (xargs ./program.exe

+0

@Cyrus、... OPは呼び出しごとに複数の引数を渡すことができるようにしたいので、どちらかといえます。 –

2

各行を文字列の配列に読み込み、その配列を実行中のプログラムに渡すには、BashFAQ #1に記載されているメソッドを使用できます。

while read -r -a args; do 
    ./program.exe "${args[@]}" 
done <in.txt 

は、引数が空白で区切られていると予想して、in.txtから引数を読み取ります。 は、のように、構文的に意味のある引用符やエスケープシーケンスを使用しません。

arg1 "argument two" 13 

あなたが得られます:

./program.exe 'arg1' '"argument' 'two"' '13' 

... の引数の合計


注意点は、あなたのファイルが含まれている場合ということです。


あなたは光栄する引用符が必要な場合は、その後、我々は戻ってxargsを使用しての空間にしているが、入力1行に1つの呼び出しで:

while read -r line; do 
    xargs ./program.exe <<<"$line" 
done <in.txt 
2

テキストファイル(foo.sh、例えばを作成します。 )このコンテンツで、chmod u+x foo.sh(それが実行可能にする)と./foo.shでそれを実行します。

#/bin/bash 

/program.exe var_1 ... var_1 #configuration one 
/program.exe var_1 ... var_2 #configuration two 
/program.exe var_1 ... var_3 #configuration three 
. 
. 
. 
./program.exe var_1 ... var_n #configuration N 
関連する問題