programas - scripts bash ejemplos
Pipe mĂșltiples comandos en un solo comando (3)
En Windows sería como sigue: (echo zzz & echo aaa & echo kkk) | sort (echo zzz & echo aaa & echo kkk) | sort
O si está dentro de un archivo por lotes, puede ser línea mono (como muestra) así como multilínea:
(
echo zzz
echo aaa
echo kkk
) | sort
Nota: la publicación original no menciona que es solo para Linux, así que agregué la solución para la línea de comandos de Windows ... es muy útil cuando se trabaja con VHD / VHDX con diskpart dentro de los scripts ( echo diskpart_command ) en lugar del eco en el Lo mismo, pero deja el echo , también hay otra forma sin ecos y con > redirector, pero es muy propenso a los errores y mucho más complejo de escribir (¿por qué usar una forma propensa a los errores si existe de una manera simple que siempre funciona? bien) ... también recuerde que %d% le da la ruta real (muy útil para no codificar la ruta de los archivos VHD / VHDX).
¿Cómo puedo canalizar la salida estándar de varios comandos a un solo comando?
Ejemplo 1: combine y ordene la salida de los tres comandos de eco:
echo zzz; echo aaa; echo kkk
salida deseada:
aaa
kkk
zzz
Ejemplo 2: reescriba lo siguiente para que todos los comandos estén en una sola línea de comandos utilizando tuberías, sin redireccionar a un archivo temporal:
setopt > /tmp/foo; unsetopt >> /tmp/foo; set >> /tmp/foo; sort /tmp/foo
Puede usar {} para esto y eliminar la necesidad de un sub-shell como en (list) , así:
{ echo zzz; echo aaa; echo kkk; } | sort
Necesitamos un carácter de espacio en blanco después de { y antes } . También necesitamos lo último ; Cuando la secuencia se escribe en una sola línea.
También podríamos escribirlo en múltiples líneas sin la necesidad de ninguna ; :
Ejemplo 1:
{
echo zzz
echo aaa
echo kkk
} | sort
Ejemplo 2:
{
setopt
unsetopt
set
} | sort
Utilice paréntesis () para combinar los comandos en un solo proceso, que concatene el stdout de cada uno de ellos.
Ejemplo 1 (tenga en cuenta que $ es el indicador de la shell):
$ (echo zzz; echo aaa; echo kkk) | sort
aaa
kkk
zzz
Ejemplo 2:
(setopt; unsetopt; set) | sort