複数行コマンド:1行をコメント化


11

(読みやすくするために)パラメータが多いコマンドのスクリプトでは、次の形式を使用します。

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

これも機能しませんでした。

質問:パラメーターをコメントアウトする方法はあるので、それ自体は別の行にありますが、スクリプトを実行できますか?

回答:


11

空のコマンド置換を使用できます。

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
あまり読めない(そしてVimは:空のコマンドやコメントとして認識しない)が、機能する。
トリカス

この解決策が気に入ったので、マウスでコピーして貼り付けて実行できます。この変更を簡単に行う/元に戻すには、viマクロが必要です。ありがとうございます。
Chirlo

1
する代替@tricasse :だろうtrue
ジェフ・シャラー

13

行の一部をコメント化することはできません。

改行がエスケープされているため、コマンドは実際には(シェルパーサーへの)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[@]}"
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.