我正在开发一个脚本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"