El 2020-05-10 a las 10:04 +0200, Ramses escribió: > Buenos días, > > Cuando he necesito recoger la salida de un comando para después tratarla, lo > he hago siempre así: > > # PRUEBA=$(ls -la) > > No me muestra la salida por Consola pero con un "echo $PRUEBA" imprimo el > contenido. > > Pero me he he encontrado con una curiosidad con NetCat. > > Si hago un: > > # PRUEBA=$(nc -z -v -w5 80.80.80.80 22) > > Me muestra la salida por Consola y si hago un "echo $PRUEBA" me muestra la > variable vacía. > > ¿Sabe alguien por qué ocurre esto con NetCat y cómo tendría que hacerlo para > recoger la salida en una variable?
Ni idea... ¡esto es linux avanzado! :-P La explicación la tienes aquí: **** passing output of a netcat command to a variable or piping through read utility <https://stackoverflow.com/questions/55889713/passing-output-of-a-netcat-command-to-a-variable-or-piping-through-read-utility> **** Y ciertamente, enviar a la salida estándar funciona: sm01@stt008:~$ PRUEBA=$(nc -z -v -w5 80.80.80.80 22 2>&1); echo $PRUEBA 80.80.80.80: inverse host lookup failed: Unknown host (UNKNOWN) [80.80.80.80] 22 (ssh) : Connection timed out sm01@stt008:~$ PRUEBA=$(nc -z -v -w5 80.80.80.80 22 2>&1); echo $PRUEBA > Escritorio/prueba.txt sm01@stt008:~$ cat Escritorio/prueba.txt 80.80.80.80: inverse host lookup failed: Unknown host (UNKNOWN) [80.80.80.80] 22 (ssh) : Connection timed out Saludos, -- Camaleón