可能是一个小的 shell 脚本问题:我试图避免将秘密值打印到控制台输出或日志。我必须逐行读取文件,然后替换每一行中的任何变量值并将输出写入新文件。
这是我要读写的代码,但问题是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
...
但是控制台日志会打印包括秘密在内的所有内容。我知道这是因为我的代码中有回声,但我不知道这里的替代解决方案是什么。如果这个问题已经包含在另一个问题中,请指导我。