環境変数のJavaに似た属性ファイル

環境変数のJavaに似た属性ファイル

propertiesファイルの各属性を環境変数に変換する必要があります。

私は、このプロパティファイルを推測してみてください:

mongo.port=27017
mongo.host=127.0.0.1
mongo.databaseName = test

bo.url-jwt=https://localhost:8089/token

環境変数にしたいです。

export MONGO_PORT=27017
export MONGO_HOST=127.0.0.1
export MONGO_DATABASENAME=test
export BO_URL_JWT=https://localhost:8089/token

これを得るためのツールやスクリプトはありますか?

Ubuntu 18x + zshを使用しています

答え1

これを行う短いスクリプトは次のとおりです。

#!/bin/bash
tmp1=$(mktemp)
tmp2=$(mktemp)

cut -d= -f 1 props.txt  | tr '[:lower:]' '[:upper:]' | tr '.-' '_' > $tmp1
cut -d= -f 2 props.txt > $tmp2

paste -d= $tmp1 $tmp2 > output.props

sed -i 's/ *= */=/' output.props
sed -i 's/^/export /' output.props

rm $tmp1 $tmp2

スクリプトは次のように動作します。 2つの一時ファイルを生成するために使用されますmktemp。入力属性ファイルは「=」文字に分割され、2つの対応するフィールドが両方のファイルに送信されます。

最初のフィールド(属性名)では、trコマンドは2回適用されます。一度は小文字を大文字に変換し、一度は特殊文字を下線に変更します。フィールド値は、これらの変更後にのみ一時ファイルに書き込まれます。

処理が完了したら、このpasteコマンドを使用してフィールドを単一のファイルoutput.propsに再グループ化します。次に、sed2 つのコマンドを使用します。最初は、「=」文字の周りのすべての空白文字を削除します。それ以外の場合、これはコマンドの構文エラーになりますexport。 2 番目のsedコマンドは、各行に「export」という文字列を接頭辞として付けるために使用されます。最後に、これら2つの一時ファイルがクリーンアップされます。

出力例:

$ cat output.props
export MONGO_PORT=27017
export MONGO_HOST=127.0.0.1
export MONGO_DATABASENAME=test
export BO_URL_JWT=https://localhost:8089/token

出力ファイルを作成したら、それを使用して環境で実際に変数を設定します。これには、次の2つの構文のいずれかを使用できます。

. output.props
source output.props

関連情報