Linux Bash中的&符号和分号有什么区别?
例如,
$ command1 && command2
Run Code Online (Sandbox Code Playgroud)
VS
$ command1; command2
Run Code Online (Sandbox Code Playgroud) 在 Dockerfiles 中,我已经习惯于看到这种模式(在Docker 的最佳实践中也有说明):
RUN apt-get update \
&& apt-get install -y curl \
&& rm -rf /var/lib/apt/lists/*
Run Code Online (Sandbox Code Playgroud)
最近,我经常遇到这样的模式:
RUN set -ex; \
apt-get update; \
apt-get install -y curl; \
rm -rf /var/lib/apt/lists/*
Run Code Online (Sandbox Code Playgroud)
我想知道有什么区别。我试过这个:
$ (echo one; exit 0) && (echo two; exit 0)
one
two
$ (echo one; exit 1) && (echo two; exit 0)
one
$ (echo one; exit 1) ; (echo two; exit 0)
one
two
$ set -ex; (echo one; exit 1) ; …Run Code Online (Sandbox Code Playgroud)