在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
thenwho
thenbanner Hi
一样。要同时运行它们,您需要ls&who&banner Hi
(最好在符号周围加空格)。您还可以编写{ls;who;banner Hi;}>somefile
一次对所有命令执行I/O重定向。第三个分号是必需的。请注意,$(cd mydir;pwd)
与(cd mydir;pwd)
具有不同的含义。我已经更新了这个问题,以反映我相当肯定你的意思/写作意图(但如果我错了,你可以修改它)。此外,作为一个卖弄学问的点,ls;谁banner Hi
按顺序运行三个命令,就像您键入了ls
thenwho
thenbanner Hi
一样。要同时运行它们,您需要ls&who&banner Hi
(最好在符号周围加空格)。您还可以编写{ls;who;banner Hi;}>somefile
一次对所有命令执行I/O重定向。第三个分号是必需的。请注意,$(cd mydir;pwd)
与(cd mydir;pwd)
具有不同的含义。我已经更新了这个问题,以反映我相当肯定你的意思/写作意图(但如果我错了,你可以修改它)。此外,作为一个卖弄学问的点,ls;谁banner Hi
按顺序运行三个命令,就像您键入了ls
thenwho
thenbanner Hi
一样。要同时运行它们,您需要ls&who&banner Hi
(最好在符号周围加空格)。您还可以编写{ls;who;banner Hi;}>somefile
一次对所有命令执行I/O重定向。第三个分号是必需的。请注意,$(cd mydir;pwd)
与(cd mydir;pwd)
具有不同的含义。我已经更新了这个问题,以反映我相当肯定你的意思/写作意图(但如果我错了,你可以修改它)。此外,作为一个卖弄学问的点,ls;谁banner Hi
按顺序运行三个命令,就像您键入了ls
thenwho
thenbanner Hi
一样。要同时运行它们,您需要ls&who&banner H