Comando multilinea: commentare una riga


11

Mi piace usare il seguente formato negli script per comandi con molti parametri (per leggibilità):

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

Ma a volte vorrei commentare uno di questi parametri come:

# -p 8080:8080  

Questo non funziona, poiché l'EOL viene interpretato come return e il comando non riesce. Ho provato anche questo:

\ # -p 8080:8080

che inoltre non ha funzionato.

Domanda: c'è un modo per commentare il parametro, quindi è ancora sulla sua riga, ma sarei in grado di eseguire lo script?

Risposte:


11

È possibile sostituire una sostituzione di comando vuota:

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
Non molto leggibile (e Vim non riconosce :come comando vuoto o commento) ma funziona.
tricasse

Mi piace il fatto che con questa soluzione posso ancora copiarlo con il mouse, incollarlo ed eseguirlo. Ora hai solo bisogno di una macro vi per poter fare / annullare questa modifica facilmente, grazie!
Chirlo,

1
@tricasse un'alternativa :sarebbetrue
Jeff Schaller

13

Non puoi commentare un pezzo di una riga.

Si noti che, poiché le nuove righe sono sfuggite, il comando è in realtà una singola riga (per il parser della shell) e non c'è modo di commentare una parte di una singola riga (tranne alla fine).

Invece, forse basta fare una copia del comando originale in un editor e commentarlo completamente mantenendo il comando modificato senza commenti:

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

In alternativa, se si desidera eliminare occasionalmente o modificare l' -popzione e il relativo argomento (presupponendo basho una shell con la stessa sintassi dell'array):

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

Quindi modifica o commenta il compito in port.

Portandolo oltre:

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

All'interno dell'assegnazione dell'array, non ci sono problemi con il commento di una riga:

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[@]}"
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.