おそらく小さなシェル スクリプトの問題です。秘密の値をコンソール出力またはログに出力しないようにしています。ファイルを 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
...
ただし、コンソール ログには、シークレットを含むすべてが出力されます。コード内のエコーが原因であることはわかっていますが、ここでの代替ソリューションが何であるかはわかりません。この問題が別の質問で既にカバーされている場合は、私に指示してください。