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に再グループ化します。次に、sed
2 つのコマンドを使用します。最初は、「=」文字の周りのすべての空白文字を削除します。それ以外の場合、これはコマンドの構文エラーになります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