設定ファイルを解析し、パラメータを別のスクリプトに渡します。

設定ファイルを解析し、パラメータを別のスクリプトに渡します。

次の内容を含む構成ファイルがあります。

variable1 = 25
variable2 = 36

Bashスクリプトでこのファイルを解析し、各変数をスクリプトの正しい値に設定したいと思います。どうすればいいですか?私のコードは一番下にありますが、内容を表示するだけです。実際にスクリプトで変数とその値を設定してから、特定の変数が(擬似コード)などの条件を満たしていることを確認したいと思います。

「variable1=25」の場合、「OK」をエコーし​​ます。

IFS="="
while read -r name value
do
echo "Content of $name is ${value//\"/}"
done < filename

ベストアンサー1

1つのオプションはファイルの構文を変更し、シェルファイルを直接解析。欠点は、シェルが有効な構文を解析できる必要があり、実際に実行スクリプトのコンテキスト内で構成ファイルをコードとして実行することです。

幸いにもすでに表示しておきましたbash。シェルが連想配列をサポートしているので、これは良いことです。これにより、シェルが値を解析または評価することなくこれらの値を読み取ることができるため、構成ファイルの内容を信頼しすぎる必要がなくなります。

構成設定が1行に1つずつあると仮定すると、次のコードを使用して読み取ることができます。

#!/bin/bash
#
declare -A config
while IFS=$'[ \t]*=[ \t]*' read -r name value
do
    echo "Read name=$name, value=$value" >&2
    config[$name]="$value"
done

"${config[$name]}"次の参照を使用して参照できます。

echo "variable1=${config[variable1]}, variable2=${config[variable2]}." >&2

この構造は動詞に記号の周りの空白を無視するようにIFS=$'[ \t]*=[ \t]*'指示するので、 とは同じです。read=fruit=pearfruit = pear

おすすめ記事