在猛砸
问题描述:
码头工人的说法在我的bash文件条件我有这样的事情在猛砸
docker run -d \
--network=host \
--name my-service \
--log-driver="$LOGGING" \
if [[ "$LOGGING" == 'splunk' ]]; then
echo "--log-opt tag={{.ImageName}}/{{.Name}}/{{.ID}} \\";
echo "--log-opt env=NODE_ENV \\";
fi
但shellcheck通过展示以下结果抱怨。任何想法? https://github.com/koalaman/shellcheck/wiki/SC1089
答
首先构建参数列表(数组中的),然后电话docker
。这有利于摆脱丑陋的连续字符。
docker_opts=(
-d
--network=host
--name my-service
--log-driver="$LOGGING"
--log-opt="$log_opt"
)
if [[ $LOGGING == splunk ]]; then
docker_opts+=(
--log-opt "tag={{.ImageName}}/{{.Name}}/{{.ID}} \\"
--log-opt "env=NODE_ENV \\"
)
fi
docker run "${docker_opts[@]}"
虽然主要的想法是保持条件代码尽可能小,并保持它与无条件代码分开。
答
我建议使用$(if ..; then ...; fi)
:
docker run -d \
--network=host \
--name my-service \
--log-driver="$LOGGING" \
$(if [[ "$LOGGING" == 'splunk' ]]; then
echo "--log-opt tag={{.ImageName}}/{{.Name}}/{{.ID}}"
echo "--log-opt env=NODE_ENV"
fi)
您是否打算使用docker命令导致无论是否有这两个“--log-opt”标志? –
是的。它是 – Mazzy