Commande multiligne: commentez une ligne


11

J'aime utiliser le format suivant dans les scripts pour les commandes avec beaucoup de paramètres (pour la lisibilité):

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

Mais, parfois, je voudrais commenter l'un de ces paramètres comme:

# -p 8080:8080  

Cela ne fonctionne pas, car l'EOL est interprété comme retour et la commande échoue. J'ai également essayé:

\ # -p 8080:8080

qui n'a pas fonctionné non plus.

Question: Existe-t-il un moyen de commenter le paramètre, il est donc toujours sur sa propre ligne, mais je serais en mesure d'exécuter le script?

Réponses:


11

Vous pouvez remplacer une substitution de commande vide:

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
Pas très lisible (et Vim ne reconnaît pas :la commande vide ou un commentaire) mais fonctionne.
tricasse

J'aime ça avec cette solution je peux toujours le copier avec la souris, le coller et l'exécuter. Maintenant, juste besoin d'une macro vi pour pouvoir faire / annuler ce changement facilement, merci!
Chirlo

1
@tricasse une alternative à :seraittrue
Jeff Schaller

13

Vous ne pouvez pas commenter un morceau de ligne.

Notez que puisque les sauts de ligne sont échappés, la commande est en fait une seule ligne (à l'analyseur shell), et il n'y a aucun moyen de commenter une partie d'une seule ligne (sauf à la toute fin).

Au lieu de cela, peut-être juste faire une copie de la commande d'origine dans un éditeur et la commenter complètement tout en gardant la commande modifiée sans commentaire:

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

Alternativement, si vous souhaitez supprimer ou modifier occasionnellement l' -poption et son argument (en supposant bashou un shell avec la même syntaxe de tableau):

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

Ensuite, modifiez ou commentez l'affectation port.

Pour aller plus loin:

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

À l'intérieur de l'affectation de tableau, il n'y a aucun problème à commenter une ligne:

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[@]}"
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.