などの複数のファイルをMyProperties
含むフォルダがあります。各ファイルには、次のような内容が含まれています。.properties
1.properties
2.properties
3.properties
keyname=value
割り当てまたは置換できるように、プロパティファイルの値としてここに何を書く必要がありますか?これをどのように繰り返し、bashスクリプトのキーに値を割り当てることができますか?
擬似コード:
#!/bin/bash
valuetobepassed="something"
#iterate over each file in the folder and replace/assign value corresponding to keyname
答え1
sed
以下を使用してファイルの値を変更できます。
#!/bin/bash
new_value=5
for f_name in MyProperties/*.properties; do
sed -i "s/^keyname=.*$/keyname=$new_value/" "$f_name"
done
答え2
ペアリングされたファイルが複数ある場合は、varName=value
次のことが必要です。源泉それ。したがって、すべての.properties
ファイルを繰り返し、各ファイルのソースコードを取得します。
for file in /path/to/MyProperties/*.properties; do
. "$file"
done
これでスクリプトにすべての変数が定義されました。表示するには:
$ cat foo.properties
foo="bar"
$ echo "$foo" ## no value
$ . ./foo.properties
$ echo "$foo"
bar
これはあなたの.properties
ファイルに次のものがあると仮定します。変数=値のペア以外にはなし。購入が行われると、ファイルの各行は購入スクリプトを実行するシェルで実行されます。したがって、ファイル内のすべてのコマンド.properties
も実行されます。アクセス権を持つすべての攻撃者はMyProperties
ここに悪意のあるコマンドを追加する可能性があります。したがって、ファイルの内容を確認できる場合にのみこれを実行してください。
与えられた組み込みパスに文字が.
含まれていることが重要です/
(したがって、./foo.properties
上記の内容)。それ以外の場合、ファイルは現在のディレクトリ(POSIX互換モードおよびPOSIX互換モードではない場合)では$PATH
ないディレクトリから検索されます。 )に見つからないbash
場合は、現在の作業ディレクトリから. file
検索されます。file
$PATH