Linux 如何从正在运行的流程中捕获用户输入?
我运行的脚本部分如下所示:Linux 如何从正在运行的流程中捕获用户输入?,linux,bash,Linux,Bash,我运行的脚本部分如下所示: gpg -c --cipher-algo AES256 key File `key.gpg' exists. Overwrite? (y/N) n Enter new filename: filekey 如何从gpg进程捕获用户的输入(即“filekey”),以便将其分配给脚本中的变量 谢谢。在调用gpg之前,您可以检查文件是否存在,并相应地将新文件名读入变量,然后调用gpg #!/bin/bash infile=${1:-key} # use argum
gpg -c --cipher-algo AES256 key
File `key.gpg' exists. Overwrite? (y/N) n
Enter new filename: filekey
如何从gpg进程捕获用户的输入(即“filekey”),以便将其分配给脚本中的变量
谢谢。在调用
gpg
之前,您可以检查文件是否存在,并相应地将新文件名读入变量,然后调用gpg
#!/bin/bash
infile=${1:-key} # use argument as filename or `key` by default
filename="${infile}.gpg"
while [ -f "$filename" ]
do
echo -n "File $filename exists. Overwrite? (y/N)"
read option
case "$option" in
y|Y )
rm $filename
;;
* )
echo -n "Enter new filename:"
read filename
;;
esac
done
gpg -c --cipher-algo AES256 -o $filename $infile
这样,当文件存在时,
gpg
永远不会问问题。Hem,如果文件存在,gpg仍然会问问题,因为没有覆盖
标志。更多:$filename必须存在,必须创建的是$filename.gpg
。。。您必须在gpg-c--cipher algoAES256-o$filename key
之前filename=“key.gpg”
,rm$filename
,。但我同意您所做的更改将模拟覆盖效果。谢谢您的回复。它肯定回答了这个问题。但是我在想“有没有办法进入这个过程”这样我就可以访问用户输入了。@Allfo我认为这是不可能的。您可以使流程从管道或其他地方读取,并从管道中获取名称。但这也与此类似。这可能是用简单的方法实现的更干净的方法。