Bash 递归脚本失败

Bash 递归脚本失败

我创建了 GUI 界面中必须使用的脚本(出于某种原因)。该脚本旨在在任何情况下在 gnome 终端中重新启动自身。

脚本的基本存根如下所示:

if [[ $1 = "-tl" ]]
then
    read VARIABLE
    
    #PERFORM SOME AWESOME STUFF :)

else
    gnome-terminal -x bash -c "${PWD}/the-script -tl"
fi

默认情况下,该脚本可能通过 Nautilus 等的“在终端中执行”命令或命令行(参见 shell)启动。

一旦脚本启动,它就会在任何条件下在 Gnome 终端中重新启动。

问题出现在当脚本移出用户目录时,它会立即运行并停止,弹出终端窗口一秒钟(当正确重新启动时,它至少必须通过读取变量命令停止)。

使用这样的字符串可以达到相同的结果:

gnome-terminal -x bash -c "./the-script -tl"

让 bash 直接将参数视为 bash 脚本名称而不是命令,在用户目录之外给出正确的结果,但在用户目录中功能却被破坏:

gnome-terminal -x bash "${PWD}/the-script" -tl

事实证明,这两种解决方案都不是通用的!

答案1

第一行应该是

if [[ $1 == "-tl" ]]

...否则您将设置 $1 的值。

术语“line”应该是

gnome-terminal -x "$0" -tl

...$0 是运行脚本的路径

相关内容