Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从子shell运行shell命令_Shell_Unix_Scripting - Fatal编程技术网

从子shell运行shell命令

从子shell运行shell命令,shell,unix,scripting,Shell,Unix,Scripting,我有一个unixshell脚本test.sh。在脚本中,我希望调用另一个shell,然后从子shell执行shell脚本中的其余命令并退出 为了说明这一点: test.sh #/bin/bash /bin/bash/*创建子shell*/ ...... 出口0 我的意图是从子shell运行shell-commands1到shell-commandN。请告诉我如何执行此操作,下面是一个示例: #!/bin/bash # subshell-test.sh ( # Inside parenthes

我有一个unixshell脚本test.sh。在脚本中,我希望调用另一个shell,然后从子shell执行shell脚本中的其余命令并退出

为了说明这一点:

test.sh
#/bin/bash
/bin/bash/*创建子shell*/
......
出口0
我的意图是从子shell运行shell-commands1到shell-commandN。请告诉我如何执行此操作,下面是一个示例:

#!/bin/bash
# subshell-test.sh

(
# Inside parentheses, and therefore a subshell . . .
while [ 1 ]   # Endless loop.
do
  echo "Subshell running . . ."
done
)

#  Script will run forever,
#+ or at least until terminated by a Ctl-C.

exit $?  # End of script (but will never get here).

您可以在组中进行设置,如

#!/bin/bash
(
Command1
Command2
etc..
)

subshell() {
    echo "this is also within a subshell"
}

subshell
(and)创建一个子shell,在其中运行一组命令,否则一个简单的函数就可以了。我不知道POSIX是否兼容(和)

更新:如果我正确理解您的评论,您希望将
-c
选项与
bash
一起使用,如

/bin/bash -c "Command1 && Command2...." &

但是我需要使用命令
/bin/bash
。无法删除该命令。在执行/bin/bash之后,将创建一个新的shell,我希望从新的shell执行其余的命令shell@LinuxPenseur:新进程是父进程的一个单独实例,因此我相信您放在
()
之间的代码将由
/bin/bash
Thanks Anders执行。但是,
/bin/bash-c“Command1&&Command2…”
没有显示命令其余部分应该从其中开始的新子shellexecute@LinuxPenseur,那么,如果您附加一个
&
,它会:)
/bin/bash -c "Command1 && Command2...." &