Tengo un script como este:
for f in *
do
#if condition
if [[ -d $f ]]; then
echo "$f is a directory";
else
echo "$f is not a directory";
fi
done
¿Es posible convertir varios scripts en 1 línea como esta? (tal vez necesito eliminar #
los comentarios).
for f in *; do if [[ -d $f ]]; then echo "$f is a directory"; else echo "$f is not a directory"; fi done
Puedo cambiar la sintaxis de la declaración en el script anterior como:
for f in *
for f in *;
for f in *;do
Lo mismo se aplica a if
la condición. En todos los casos, debería generar una línea adecuada. ¿Cuál podría ser la forma automatizada de hacer esto?
Respuesta1
Analizar bash en oneliners es una tarea difícil...
De todos modos como punto de partida, aquí va una sugerencia para abarcar situaciones muy concretas como la presentada.
perl -p0e '
s/#.*//;
s/;?\s+(do|done|then|else|fi)\s+/ ; $1 /g '
Respuesta2
Puedes probar lo siguiente:
awk '{ printf "%s", $0 }' script.txt