Moo*_*oom 26 command-line scripts restart
我正在设置一个带有菜单和子菜单、选项等的 shell 脚本。但是在每个菜单/子菜单/等上,我需要一个“返回主菜单”选项。
我已经设置了菜单并且它工作正常,但是我需要一种方法来简单地从头开始重新启动脚本,重置所有变量等。
或者退出当前脚本并重新启动它的方法。
我试过这样做:
ScriptLoc=$(readlink -f "$0")
./ScriptLoc
Run Code Online (Sandbox Code Playgroud)
但这会在“旧”脚本中启动“新”脚本,因此当我退出“新”脚本时,它会返回到“旧”脚本(如果有任何意义)。这是脚本中的脚本之类的东西。
任何人都知道如何完全重新启动它?
poo*_*lie 28
是的
exec "$ScriptLoc"
Run Code Online (Sandbox Code Playgroud)
该exec内建命令的bash替换为新的一个当前程序。
Rad*_*anu 10
你可以使用这样的东西:
$(basename $0) && exit
Run Code Online (Sandbox Code Playgroud)
$(basename $0)将创建当前脚本的新实例,并exit从脚本的当前实例退出。
这是一个突出显示上述方法的测试脚本:
$(basename $0) && exit
Run Code Online (Sandbox Code Playgroud)
如果您不使用export count=0(使其count成为环境变量)而只使用count=0(使其cont成为本地脚本变量),则脚本将永远不会停止。