1

おそらく小さなシェル スクリプトの問題です。秘密の値をコンソール出力またはログに出力しないようにしています。ファイルを 1 行ずつ読み取ってから、すべての行の変数値を置き換えて、出力を新しいファイルに書き込む必要があります。

読み書きするコードは次のとおりですが、問題は、input.txt別のシステムからのシークレット変数が含まれているか、環境変数を使用できることです。

source ./environment

while read line;
    do eval echo \"$line\";
done < input.txt > output.txt

./environment ファイルには、いくつかの変数値が含まれています。

input.txt は次のようになります。

projectName=Alpha
apiKey=${SECREST_APIKEY}
userKey=${SECRET_USERKEY}
projectVersion={$VERSION}
requesterEmail=

Colsole ログ:

...
+ read line
+ eval echo '"projectName=Alpha"'
++ echo projectName=Alpha
projectName=Alpha
+ read line
+ eval echo '"apiKey=${CFG_APIKEY}"'
++ echo apiKey=blablablablablabla
+ read line
+ eval echo '"userKey=${CFG_USERKEY}"'
++ echo userKey=keyKEYkey
...

ただし、コンソール ログには、シークレットを含むすべてが出力されます。コード内のエコーが原因であることはわかっていますが、ここでの代替ソリューションが何であるかはわかりません。この問題が別の質問で既にカバーされている場合は、私に指示してください。

4

0 に答える 0