因此,我正在制作一个简单的脚本,该脚本可以加载两个脚本和一个命令,但是出于论证的目的,让我们保持简单,而无需了解许多项目的细节。
请注意,我正在Raspbian环境中工作。这是最新版本。如果重要的话,我正在使用树莓派3B +。我的pi已设置为在控制台中启动,因此我可以立即(通过别名)运行此脚本。
继续,我们里面有三个脚本,可以说originalScript.sh:
~loop.sh
~processStart.sh
~startx (this is specific, but in case you don't know, this is the command used in raspberry pi terminal ((and probably any Linux GUI system)) that initiates the OS's GUI)
问题。该命令需要以最终的startx命令结束,GUI将加载该文件以使processStart.sh运行。问题是loop.sh也需要运行,但是当它是第一个或第二个命令时,永远不会到达以下命令。我会坚持到最后,但是当我启动startx时,脚本在GUI加载时被剪切(因此需要您打开一个新终端并重新启动带有错误的原始脚本((因为GUI已加载。)))
有没有一种方法可以使loop.sh作为一个进程启动或在另一个会话中打开,而startx是这样吗?我尝试过
`source ~/loop.sh`
`bash ./loop.sh`
和脚本中的其他几个,但是它们执行相同的操作;在同一窗口中启动脚本。如预期发生的那样,当循环开始时,程序的其余部分直到结束才发生。
如果我不能像那样启动该脚本,从逻辑上讲,是否有另一种方法可以通过一个脚本同时运行它?
预先感谢您的帮助!
答案 0 :(得分:1)
在bash中,可以通过在命令后面附加与号来启动loop.sh
作为后台进程。 (即loop.sh &
),该命令将在后台运行,脚本的其余部分将继续运行。
请注意,如果loop.sh
正在执行startx
之前需要做的任何事情,则必须向脚本中添加其他逻辑以检查startx
是否已准备好运行。
source loop.sh
将在当前shell中运行loop.sh
,直到loop.sh
退出后才会返回。
bash loop.sh
将启动一个新的bash
进程并运行loop.sh
。直到该bash进程退出,脚本才会继续。