Это несколько повторяется, но будет работать для всех возможных аргументов docker save
:
if [ "${EE_flag}" = true ]; then
docker save AA BB CC DD EE
else
docker save AA BB CC DD
fi | gzip -o single-tarball.tar.gz
Чтобы уменьшить восприимчивость, вы можете использовать позиционные параметры скрипта.
set -- AA BB CC DD
[ "${EE_flag}" = true ] && set -- "$@" EE
docker save "$@" | gzip -o single-tarball.tar.gz
В более мощной оболочке вы бы использовали массив вместо позиционных параметров, но оболочка POSIX пока не требует поддержки массивов.
Некоторая дополнительная работа требуется, если скрипт уже использует позиционные параметры. Или вы можете определить функцию (которая имеет свой собственный набор позиционных параметров), которая всегда сохраняет AA, BB, CC, DD в дополнение к любым другим аргументам.
ds () { docker save AA BB CC DD; }
if [ "${EE_flag}" = true; then
ds
else
ds EE
fi | gzip -o single-tarball.tar.gz