Quando si creano script di shell usando pipeline e si usa la barra rovesciata per continuare le righe, voglio inserire commenti su righe separate , in modo robusto, leggibile e portatile.
Ad esempio, dato questo comando multilinea senza commento (rubato da @DigitalRoss per la sua chiarezza):
echo abc |
tr a-z A-Z |
sort |
uniq
... il seguito è esteticamente più vicino a ciò che voglio realizzare, ma per ovvie ragioni, non funziona ... e sì, sono ben consapevole che questo non è qualcosa che normalmente merita di essere commentato:
# Perform critical system task.
# NOTE - An example of what does *not* work.
echo abc |
# Convert lowercase to uppercase.
tr a-z A-Z |
# Sort the results.
sort |
# Only show unique lines.
uniq
Le risposte correlate esistenti sembrano insoddisfacenti per me , come segue:
Innanzitutto, la risposta di Glenn Jackman (aggiungendo argomenti a un array e quindi eseguendo l'array) funziona per singoli comandi, ma non funziona per il pipelining (e anche se lo facesse, aggiunge complessità che vorrei evitare).
In secondo luogo, anche la risposta di @Gilles qui (che usa :) non sembra funzionare con il pipelining, perché altera il flusso della pipeline:
$ echo "abc" | :
$
( NOTA : se esiste un equivalente :che trasmette un output non modificato, sarebbe esteticamente accettabile, ma non sono stato in grado di trovarne uno. Potrei scriverne uno personalizzato, ma ridurrebbe la portabilità.)
Infine, l'ultima parte della risposta di DigitalRoss su StackOverflow funziona bene per aggiungere commenti sulla stessa riga, ma preferisco fortemente i commenti su righe separate. Altrimenti, quando le linee hanno lunghezze molto variabili, la leggibilità è ridotta:
echo abc | # normal comment OK here`
/usr/local/bin/really/long/path/ridiculously-long-filename.sh | # another normal comment OK here
sort | # the pipelines are automatically continued
uniq # final comment
Sto cercando risposte che preservino la leggibilità e minimizzino la complessità, oppure alcuni retroscena del perché ciò che sto cercando non è fattibile.
i++; // increment i by one. Ti suggerisco di leggere "Gli elementi dello stile di programmazione"