多数のパラメーターを持つコマンド(読みやすくするため)のスクリプトでは、次の形式を使用します。
docker run \
--rm \
-u root \
-p 8080:8080 \
-v jenkins-data:/var/jenkins_home \
-v /var/run/docker.sock:/var/run/docker.sock \
-v "$HOME":/home \
jenkinsci/blueocean
しかし、これらのパラメーターの1つを次のようにコメントアウトしたい場合があります。
# -p 8080:8080
EOLはリターンとして解釈され、コマンドが失敗するため、これは機能しません。これも試しました:
\ # -p 8080:8080
これも機能しませんでした。
質問:パラメーターをコメントアウトする方法はあるので、パラメーターはまだ1行になっていますが、スクリプトを実行できますか?
空のコマンド置換を使用できます。
docker run \
--rm \
-u root \
$(: -p 8080:8080 ) \
-v jenkins-data:/var/jenkins_home \
-v /var/run/docker.sock:/var/run/docker.sock \
-v "$HOME":/home \
jenkinsci/blueocean
行の一部をコメント化することはできません。
改行がエスケープされているため、コマンドは実際には(シェルパーサーへの)1行であり、1行の一部をコメント化する方法はありません(最後を除いて)。
代わりに、おそらくエディターで元のコマンドのコピーを作成し、変更されたコマンドのコメントを外したまま、完全にコメント化します。
docker run \
--rm \
-u root \
-v jenkins-data:/var/jenkins_home \
-v /var/run/docker.sock:/var/run/docker.sock \
-v "$HOME":/home \
jenkinsci/blueocean
# Was originally:
# docker run \
# --rm \
# -u root \
# -p 8080:8080 \
# -v jenkins-data:/var/jenkins_home \
# -v /var/run/docker.sock:/var/run/docker.sock \
# -v "$HOME":/home \
# jenkinsci/blueocean
または、-p
オプションとその引数を時々削除または変更する場合(bash
または同じ配列構文のシェルを想定):
port=( -p 8080:8080 )
docker run \
--rm \
-u root \
"${port[@]}" \
-v jenkins-data:/var/jenkins_home \
-v /var/run/docker.sock:/var/run/docker.sock \
-v "$HOME":/home \
jenkinsci/blueocean
次に、port
への割り当てを変更またはコメント化します。
これをさらに進める:
docker_run_args=(
--rm
-u root
-p 8080:8080
-v jenkins-data:/var/jenkins_home
-v /var/run/docker.sock:/var/run/docker.sock
-v "$HOME":/home
jenkinsci/blueocean
)
docker run "${docker_run_args[@]}"
配列の割り当て内では、行をコメント化しても問題はありません。
docker_run_args=(
--rm
-u root
# -p 8080:8080
-v jenkins-data:/var/jenkins_home
-v /var/run/docker.sock:/var/run/docker.sock
-v "$HOME":/home
jenkinsci/blueocean
)
docker run "${docker_run_args[@]}"