Это не только для Docker; это просто обычный синтаксис оболочки, используемый в команде RUN
. set -e
заставляет скрипт завершиться в случае сбоя какой-либо команды, в то время как &&
запускает свою правую команду только в том случае, если левая команда не дает сбоя. Так в обоих
set -e
foo
bar
и
foo && bar
bar
будет работать только в случае успеха foo
.
Итак, оба идентичных , если , весь сценарий состоит из одной команды списка ... && ... && ...
, где команда выполняется только в случае успеха каждой предыдущей команды. Пример того, как они будут отличаться:
set -e
echo one
false
echo two
echo three
Здесь echo two
и echo three
никогда не будут работать. Но в
echo one && false && echo two
echo three
echo three
все еще будет работать, потому что только echo two
был "охранен" &&
, предшествующим ему.