我今天想要的是在不阻塞的情况下从命名管道中读取/写入,并在不终止进程的情况下关闭两端的管道。我正在努力使进程在firset wright转到管道后关闭。我有一些代码给你来帮助我解决我的麻烦。
mkfifo _gnupg_pipe_command
gpg --homedir ./ --batch --verbose \
--pinentry-mode loopback \
--gen-key _gnupg_pipe_command &
cat > $_gnupg_pipe_command <<EOF
%echo Generating a basic OpenPGP key
Key-Type: RSA
Key-Length: 4096
Key-Usage: sign
Subkey-Type: RSA
Subkey-Length: 4096
Name-Real: $_gnupg_name
EOF
if [ -v _gnupg_comment ]; then
cat > _gnupg_pipe_command <<EOF
Name-Comment: _gnupg_comment
EOF
fi
cat > _gnupg_pipe_command <<EOF
Name-Email: _gnupg_email@_gnupg_universe
Expire-Date: 1y
Passphrase: _gnupg_passphrase_key
# Do a commit here, so that we can later print "done" :-)
%commit
%echo done
EOF发布于 2020-07-02 23:45:00
将所有命令放在一个列表或子whole中,并将整个内容重定向到管道。
{
command1
command2
command3
} > _gnupg_pipe_command管道将在开始时只打开一次,并在所有命令完成时关闭。
如果是一行代码,您需要适当的空格和;,因为{和}不是自定界语法,它们是关键字。
{ cmd1; cmd2; cmd3; } > _gnupg_pipe_command显然,问题中的脚本不能是一行代码,因为这里有文档。
https://stackoverflow.com/questions/62699949
复制相似问题