Wie kommentiere ich mehrzeilige Befehle in Shell-Skripten?

19

Wenn Sie lange, switchlastige Befehle aufrufen, empfiehlt es sich, diese in Shell-Skripten zu schreiben. Gibt es eine einfache Möglichkeit, Zeilen in solchen Skripten zu kommentieren? Ich habe die folgenden Methoden ausprobiert, aber keine funktioniert.

# 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

quelle
1
Die zweite bewirkt, dass ein Leerzeichen als Argument gesendet wird ( \ das nächste Zeichen wird ausgeblendet, wodurch Zeilenumbrüche "ausgeblendet" werden, Leerzeichen jedoch von Bedeutung sind).
Geekosaurier

Antworten:

14

Dies kann eine Option sein: Speichern Sie den Befehl und die Argumente in einem Array und führen Sie sie anschließend aus

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

# execute it
"${cmd[@]}"
Glenn Jackman
quelle
Dies ist bash-nur ...
Socob
3

Ich habe die kommentierten immer direkt nach dem Befehl verschoben.

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

Das Problem ist, dass die Schrägstriche entfernt werden, bevor die Zeile analysiert wird, sodass der erste Befehl so analysiert wird, als ob Sie geschrieben hätten command #--bad-switch --good-switch . Wenn Sie eine sehr lange Folge von Befehlen haben, können Sie beispielsweise einen zeilenweisen Kommentarblock darüber oder darunter schreiben , der die einzelnen Befehle der Reihe nach erläutert, oder Sie können die Parameter in einer Variablen speichern (obwohl dies häufig zu Kopfschmerzen beim Zitieren führt) spezielle Charaktere).

l0b0
quelle
1
Das scheint nicht der Fall zu sein. --good-switchwird als Befehl interpretiert.
0

Ein Kommentar bremst die Kette der verbundenen Zeilen. Die einfachste Lösung wäre, die kommentierten Zeilen am Ende der Liste zu verschieben.

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

Wenn Sie die Reihenfolge nicht ändern möchten, können Sie den :Befehl (das Doppelpunkt-Dienstprogramm, das nichts tut) verwenden, um die verbundenen Leitungen intakt zu halten:

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

Ich habe damit getestet:

function command { 
  echo "num args:" $#;
}
rubo77
quelle