我正在开发一个脚本gpg,我想在encrypt命令中编写一个密码短语。密码短语写入同一目录中的文本文件(passphrase.txt)。所以我的目标是能够在script.sh中代替mypassphrase写入文本文件的内容。我已经看过grep和sed的命令了,但是在使用它们时遇到了一些困难。有什么建议吗?
命令加密:

gpg --passphrase mypassphrase --local-user $1 --recipient $2 --armor --sign --output $3.asc --encrypt $3

最佳答案

您可以使用:

gpg --passphrase $(tr -d $'\n' < passphrase.txt) --local-user "$1" --recipient "$2" --armor --sign --output "$3.asc" --encrypt "$3"

说明:
bash知道command substitution$(),这将返回命令的输出:
output=$(command)

命令tr -d $'\n' passphrase.txt将输出mypassphrase.txt的内容,但将删除其他新行(如果有)。
如果可以确保密码文件中没有其他新行,则可以使用以下速度更快的命令:
gpg --passphrase $(< mypassphrase.txt) --local-user "$1" --recipient "$2" --armor --sign --output "$3.asc" --encrypt "$3"

10-05 22:29