0

私は bash スクリプトにまったく慣れていませんが、次の問題に対する答えをまだ見つけていません。誰かが私に教えてくれるか、それを行う方法についてのヒントを教えてくれることを願っています.

背景: 実行に時間がかかる入力として ini ファイル (「input.ini」など) を受け入れるプログラム (「プログラム」など) があります。プログラムの ini ファイル内の変数は、たとえば「number」であり、number=1 に設定されている場合があります。

問題: ./program input.ini をかなり頻繁に呼び出す必要がありますが、"number" の値が異なります (1、2、3、4、5 など)。それに応じて、forループ設定「番号」でプログラムを実行するbashスクリプトを作成できると思いました。ループは問題ありませんが、ini ファイルに「number」を設定します。(スクリプトで VALUE が設定されている ini ファイルで、たとえば number=$VALUE を試しましたが、これは機能しません。)

質問: bash スクリプトを使用して ini ファイルに変数を設定するにはどうすればよいですか? (これは永続的である必要はありませんが、プログラムの実行中のみです。)

追加の質問: ini ファイルに変数を設定することは 1 つのことです。さらに、次のことも行うとよいでしょう (これも同様に機能すると思いました...)。 プログラムはいくつかの出力ファイルを生成します。これらのファイルの名前は、「output_name=filename.out」などの方法で ini ファイルに設定することもできます。それに応じて出力名を設定する「output_name=filename_$VALUE.out」のようなものがあれば、今は素晴らしいでしょう。

私が何をしようとしているのかが明確になることを願っています.

ありがとう、カリ

4

4 に答える 4

3

を含むファイルがある場合はnumber=something、を使用して「何か」を「5」に置き換えることができますsed "/^number=/s/=.*/=5/

これは、プロセス置換を使用して一度実行できることです。

./program <(sed "/^number=/s/=.*/=5/" baseinput.ini) 

または、次のように、古いものに基づいて新しい ini ファイルを作成できます。

sed "/^number=/s/=.*/=5/" baseinput.ini > input.ini
./program input.ini

また、ini ファイル全体をスクリプトとして定義し、ヒア ドキュメントで置き換えることもできます。

N=5
./program - << EOF
[Section]
number=$N
foo=bar
EOF
于 2013-07-30T21:06:25.423 に答える
0

これが役立つかどうかはよくわかりません: これは、プログラム スクリプトを 5 回呼び出します。

for n in 1 2 3 4 5
do
   ./program $n input.ini
done

次に、プログラムで、最初のパラメーター $n を $1 として参照します。

2 番目のパラメーター input.ini は $2 です。

于 2013-07-30T21:06:03.763 に答える
0

git が利用可能で、インデントについて心配していない場合、ハックは git config を使用することです。

例:

$ git config -f settings.ini server.ip 123.123.123.123
$ cat settings.ini
[server]
    ip = 123.123.123.123

$ git config -f settings.ini server.ip 123.123.123.124
$ cat settings.ini
[server]
    ip = 123.123.123.124
于 2014-02-22T11:49:39.427 に答える