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

複数行コマンド: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つをコメントアウトしたい場合があります。たとえば、次のようになります。

# -p 8080:8080  

EOLは戻りとして解釈され、コマンドが失敗するため機能しません。またこれを試しました:

\ # -p 8080:8080

これも機能しません。

Q:パラメータはまだ独自の行にありますが、スクリプトを実行できるようにパラメータをコメントアウトする方法はありますか?

答え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[@]}"

配列割り当て内で1行をコメントアウトするのに問題はありません。

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[@]}"

答え2

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

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

関連情報