Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何从正在运行的流程中捕获用户输入?_Linux_Bash - Fatal编程技术网

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我认为这是不可能的。您可以使流程从管道或其他地方读取,并从管道中获取名称。但这也与此类似。这可能是用简单的方法实现的更干净的方法。