非阻塞bash命令


11

假设我有一个bash脚本,其中包含以下内容:

#!/bin/sh
gedit
rm *.temp

当我使用执行它时sh ./test.sh,会gedit弹出,但是rm直到关闭后该零件才运行gedit

我希望脚本即使gedit未关闭也能继续运行;就像gedit不阻止bash执行一样。

我提供的示例只是一个示例(rm在实际情况下,第一个示例无效)。

Answers:


25

您正在寻找的术语称为“为工作提供背景”。在外壳程序或脚本中运行命令时,可以在末尾添加标志以将其发送到后台,然后继续运行新命令或脚本的其余部分。在包括在内的大多数shell中sh,这就是&字符。

#!/bin/sh
gedit &
rm ./*.temp

通过这种方式,外壳不等待终止gedit与双方rmgedit会同时运行。

术语“阻止”通常与通常针对文件或设备的输入/输出流有关。它也以与您所使用的含义类似的方式用于编译语言中,但在bash和类似的shell脚本中,术语(和功能!)却大不相同。


谢谢!解释了为什么我只能在Google上获取fifo和输入结果:D
Plante

我的印象是,Plante希望从外部影响脚本,在后台执行每个操作,而不是重写脚本。
用户未知

@user:花了我几本书才猜到他想要什么。也许您可以对此问题发表评论以求澄清。
Caleb'7

这正是我所需要的,再次感谢。到目前为止效果很好!
Plante
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.