【发布时间】:2021-03-29 06:53:38
【问题描述】:
我怎样才能让下面的脚本正常工作?
1 #/bin/bash
2
3 # some commands
4
5 bash
6 # a lot of commands
7 # ...
8 exit
9
10 bash
11 # A lot of other commands
12 # ...
13 exit
14
15 exit 0
问题在于,在 shell 中执行脚本时,会进入一个新的交互式 bash shell,并且执行会停在那里等待标准输入。由于子环境在实践中可能不是 BASH,第 4 行和第 9 行中的 bash 命令只是示例,这就是为什么我需要一个新的解决方案,而不是将这些命令放入单独的文件并调用。感谢您的帮助。
【问题讨论】:
-
问题不是很清楚 - 可能是一些实际的代码和结果会有所帮助。但是,您可以将这些代码 sn-ps 定义为函数并在后台调用该函数-因此其余代码将执行-查看bash.cyberciti.biz/guide/Putting_functions_in_background
-
你真正想做什么?我非常不清楚您为什么要在 bash 脚本中调用
bash。 -
感谢 Sharad,但功能可能不是这样,因为它无法提供新的执行环境。实际上,当使用 buildah 的 rootless 容器时,必须使用“buildah unshare”进入用户命名空间,然后做一些 mount 和 chroot 的事情。由于 bash/buildah unshare/chroot 都在创建/进入新的子环境,并且它们都具有类似“bash/buildah unshare/chroot -- COMMAND”的语法,其中 COMMAND 可以是任何合法命令或有效脚本(文件)。如果不喜欢脚本文件,还有其他方法可以一次性执行多命令吗?
标签: linux shell script subshell