Como comentar comandos de várias linhas em scripts de shell?


19

Ao invocar comandos longos e pesados ​​de switch, é uma boa prática gravá-los em shell scripts. Existe uma maneira fácil de comentar linhas nesses scripts? Eu tentei os seguintes métodos, mas nenhum deles funciona.

# the \ is also commented out, resulting in "command" and "--good-switch".
command \
  #--bad-switch \
  --good-switch \

# seems to send an extra argument to the command
command \
  \ #--bad-switch \
  --good-switch
shell 

1
O segundo faz com que um espaço seja enviado como argumento ( \ escapa do próximo caractere, que "oculta" novas linhas, mas torna os espaços significativos).
Geekosaur

Respostas:


14

Pode ser uma opção: armazene o comando e os argumentos em uma matriz e execute-o após

# build the command
cmd=( ls
        -F
      # -a   # comment out this option temporarily
        -l
    )
# $cmd is now an array with 3 elements

# execute it
"${cmd[@]}"

Isto é bashapenas ...
Socob 28/09

3

Eu sempre mudei os comentados logo após o comando.

command \
  --good-switch
# --bad-switch          with explanation here, if needed

0

O problema é que as barras são removidas antes da análise da linha; portanto, o primeiro comando é analisado como se você tivesse escrito command #--bad-switch --good-switch. Se você possui uma sequência realmente longa de comandos, pode escrever, por exemplo, um bloco de comentários linha a linha acima ou abaixo dele, explicando cada um deles, ou pode armazenar os parâmetros em uma variável (embora isso geralmente cause dores de cabeça entre aspas com caracteres especiais).


1
Esse não parece ser o caso. --good-switché interpretado como um comando.


0

um comentário freia a cadeia de linhas conectadas; portanto, a solução mais simples seria mover as linhas comentadas no final da lista.

command \
  --good-switch \
  # --bad-switch \

Se você não quiser alterar a ordem, poderá usar o :comando (o utilitário de dois pontos, que não faz nada) para manter intactas as linhas conectadas:

command \
  `: --bad-switch `\
  --good-switch \

Eu testei com isso:

function command { 
  echo "num args:" $#;
}
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.