不暂停脚本的情况下输入Bash?

4
在Bash中,唯一获取(用户)输入的方法似乎是使用read方法,它会暂停脚本的其余部分。是否有任何方法可以接收命令行输入(以回车键结束)而不会暂停脚本。从我所看到的情况来看,可能可以使用$1的方式来实现?

2
你收到输入后打算做什么? - Etan Reisner
$1, $2, ... 是脚本参数。 - Fernando
2
这绝对有一种 XY 问题 的感觉。 - Jonathan Leffler
1
@AbhiBeckert,你可以使用&在后台启动一个命令,但正如@Etan所说,你打算用它做什么? - Super-intelligent Shade
@AbhiBeckert:有适合特定任务的编程语言,也有不适合的。虽然我们不知道 Y 是什么,但问题要求的 X 显然不适合使用 shell。在了解 Y 是什么之前,我们无法给出如何实现 Y 的好建议,但 X 似乎是个坏主意——这正是 XY 问题的典型例子。 - Jonathan Leffler
显示剩余4条评论
1个回答

5

read -t0 可以用于探测输入,如果你的进程被构建为一个循环结构。

 #!/bin/bash

 a='\|/-'
 spin()
 {
  sleep 0.3
  a="${a:1}${a:0:1}"
  echo -n $'\e'7$'\r'"${a:1:1}"$'\e'8
 }

 echo 'try these /|\- , dbpq , |)>)|(<( , =>-<'

 echo -n "  enter a pattern to spin:"
 while true
 do
   spin
   if read -t0 
   then
     read a
     echo -n "  using $a enter a new pattern:" 
   fi
 done

否则,您可以在前台提示输入时在后台运行一个命令。等等...

2
+1 对于酷炫的旋转图案 :)。也可以检查这个:|)>=<(|(<=>) - Super-intelligent Shade

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接