Al crear scripts de shell utilizando tuberías y utilizando la barra diagonal inversa para continuar líneas, quiero insertar comentarios en líneas separadas , de una manera robusta, legible y portátil.
Por ejemplo, dado este comando de varias líneas no comentado (robado de @DigitalRoss por su claridad):
echo abc |
tr a-z A-Z |
sort |
uniq
... el siguiente es estéticamente más cercano a lo que quiero lograr, pero por razones obvias, no funciona ... y sí, soy muy consciente de que esto no es algo que normalmente valga la pena comentar:
# 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
Las respuestas relacionadas existentes me parecen insatisfactorias , de la siguiente manera:
Primero, la respuesta de Glenn Jackman (agregar argumentos a una matriz y luego ejecutar la matriz) funciona para comandos individuales, pero no funciona para la canalización (e incluso si lo hiciera, agrega complejidad que me gustaría evitar).
En segundo lugar, la respuesta de @Gilles aquí (que usa :
) tampoco parece funcionar con la canalización, porque altera el flujo de la tubería:
$ echo "abc" | :
$
( NOTA : Si hay un equivalente a :
esa salida que no se modifica, eso sería estéticamente aceptable, pero no he podido encontrar uno. Podría escribir uno personalizado, pero reduciría la portabilidad).
Finalmente, la última parte de la respuesta de DigitalRoss en StackOverflow funciona bien para agregar comentarios en la misma línea, pero prefiero los comentarios en líneas separadas. De lo contrario, cuando las líneas tienen longitudes muy diferentes, se reduce la legibilidad:
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
Estoy buscando respuestas que preserven la legibilidad y minimicen la complejidad, o bien algunos antecedentes sobre por qué lo que estoy buscando es inviable.
i++; // increment i by one
. Le sugiero que lea "Los elementos del estilo de programación"Respuestas:
¿Qué tal esto?
(La barra invertida debe usarse como el último carácter en esas líneas). No estoy seguro acerca de la portabilidad de ese enfoque, pero sí funciona con la corriente
bash
.fuente