在Unix shell脚本中用括号括起多个命令有什么用

在Unix shell脚本中用括号括起多个命令有什么用,shell,unix,Shell,Unix,有几种方法可以一次运行多个命令。一种方法是用分号分隔每个命令: ls;who;banner Hi 另一种方法是将多个命令括在括号中 (cd mydir;pwd) 用括号括起来会发生什么?括号会创建一个子shell。子shell是当前shell的副本,这意味着状态更改(如使用cd更改工作目录或设置shell变量或导出环境变量)不会影响原始shell 在这里的例子中,cd命令更改工作目录,pwd显示了这一点。当提示返回时,您仍将处于与以前相同的目录中,因为cd仅在子shell中更改了目录。括号创

有几种方法可以一次运行多个命令。一种方法是用分号分隔每个命令:

ls;who;banner Hi
另一种方法是将多个命令括在括号中

(cd mydir;pwd)

用括号括起来会发生什么?

括号会创建一个子shell。子shell是当前shell的副本,这意味着状态更改(如使用
cd
更改工作目录或设置shell变量或导出环境变量)不会影响原始shell


在这里的例子中,
cd
命令更改工作目录,
pwd
显示了这一点。当提示返回时,您仍将处于与以前相同的目录中,因为
cd
仅在子shell中更改了目录。

括号创建了子shell。子shell是当前shell的副本,这意味着状态更改(如使用
cd
更改工作目录或设置shell变量或导出环境变量)不会影响原始shell


在这里的例子中,
cd
命令更改工作目录,
pwd
显示了这一点。当提示返回时,您仍将处于与以前相同的目录中,因为
cd
仅在子shell中更改了目录。

括号创建了子shell。子shell是当前shell的副本,这意味着状态更改(如使用
cd
更改工作目录或设置shell变量或导出环境变量)不会影响原始shell


在这里的例子中,
cd
命令更改工作目录,
pwd
显示了这一点。当提示返回时,您仍将处于与以前相同的目录中,因为
cd
仅在子shell中更改了目录。

括号创建了子shell。子shell是当前shell的副本,这意味着状态更改(如使用
cd
更改工作目录或设置shell变量或导出环境变量)不会影响原始shell


在这里的例子中,
cd
命令更改工作目录,
pwd
显示了这一点。当提示返回时,您仍将处于与以前相同的目录中,因为
cd
仅在子shell中更改了目录。

您能告诉我何时必须将多个命令用分号括起来,何时用分号分隔多个命令吗@当你想要一个subshell时,请使用括号。嗯…,但是请让我知道subshell的用途是什么@JoniCan你能告诉我什么时候我们必须用分号把多个命令括起来,什么时候用分号把多个命令分开吗@当你想要一个subshell时,请使用括号。嗯…,但是请让我知道subshell的用途是什么@JoniCan你能告诉我什么时候我们必须用分号把多个命令括起来,什么时候用分号把多个命令分开吗@当你想要一个subshell时,请使用括号。嗯…,但是请让我知道subshell的用途是什么@JoniCan你能告诉我什么时候我们必须用分号把多个命令括起来,什么时候用分号把多个命令分开吗@当你想要一个subshell时,请使用括号。嗯…,但是请让我知道subshell的用途是什么@JoniNote表示
$(cd mydir;pwd)
(cd mydir;pwd)
具有不同的含义。我已经更新了这个问题,以反映我相当肯定你的意思/写作意图(但如果我错了,你可以修改它)。此外,作为一个卖弄学问的点,
ls;谁banner Hi
按顺序运行三个命令,就像您键入了
ls
then
who
then
banner Hi
一样。要同时运行它们,您需要
ls&who&banner Hi
(最好在符号周围加空格)。您还可以编写
{ls;who;banner Hi;}>somefile
一次对所有命令执行I/O重定向。第三个分号是必需的。请注意,
$(cd mydir;pwd)
(cd mydir;pwd)
具有不同的含义。我已经更新了这个问题,以反映我相当肯定你的意思/写作意图(但如果我错了,你可以修改它)。此外,作为一个卖弄学问的点,
ls;谁banner Hi
按顺序运行三个命令,就像您键入了
ls
then
who
then
banner Hi
一样。要同时运行它们,您需要
ls&who&banner Hi
(最好在符号周围加空格)。您还可以编写
{ls;who;banner Hi;}>somefile
一次对所有命令执行I/O重定向。第三个分号是必需的。请注意,
$(cd mydir;pwd)
(cd mydir;pwd)
具有不同的含义。我已经更新了这个问题,以反映我相当肯定你的意思/写作意图(但如果我错了,你可以修改它)。此外,作为一个卖弄学问的点,
ls;谁banner Hi
按顺序运行三个命令,就像您键入了
ls
then
who
then
banner Hi
一样。要同时运行它们,您需要
ls&who&banner Hi
(最好在符号周围加空格)。您还可以编写
{ls;who;banner Hi;}>somefile
一次对所有命令执行I/O重定向。第三个分号是必需的。请注意,
$(cd mydir;pwd)
(cd mydir;pwd)
具有不同的含义。我已经更新了这个问题,以反映我相当肯定你的意思/写作意图(但如果我错了,你可以修改它)。此外,作为一个卖弄学问的点,
ls;谁banner Hi
按顺序运行三个命令,就像您键入了
ls
then
who
then
banner Hi
一样。要同时运行它们,您需要
ls&who&banner H