scripts script programacion pasar parametros español ejemplos comandos shell scripting ksh

shell - programacion - scripts bash ejemplos



redirigir salida de comando a salida variable y estándar en ksh (3)

Qué tal si:

VAR=$(ls | tee /dev/tty)

Tengo un comando de shell. Me gustaría escribir el resultado en la salida estándar y guardarlo en variable también. Me gustaría resolverlo con un solo comando. He intentado estas cosas.

ls > $VAR # redirects the output to file which name is stored in $VAR ls | tee -a $VAR # writes to standard output as well as in file which name is stored in $VAR VAR=`ls` # output into $VAR, but it is not sent to standard output VAR=`ls`;echo $VAR # ok, it works but these are two commands

¿Alguna idea?


gran respuesta de @Gary_Barker, pero esto no es posible en todos los sistemas.

En nuestro teamcity no hay una char-console. Y hay otro pequeño problema.

Si uso

VAR=$(ls -1); echo $VAR

no es lo mismo que ls -1

Mi solución funciona, si no importa, que la salida proviene de la tubería de error.

VAR=$(ls -1 | tee >&2)


Según entiendo, VAR=`ls`;echo $VAR está bien pero no te gusta porque tiene 2 comandos.

Mientras @ Gary-Barker está trabajando, no he verificado todos los sistemas. Si tienes un problema con el tee u otro, puedes construir tu propio SIEMPRE.

No sé si lo sabes, pero muchos de los programas que puedes usar en Linux son solo un montón de código que usa los pequeños binarios en el sistema. Si bien esto es cierto, no tiene sentido utilizar 1 o 2 comandos, porque la ejecución final es realmente un grupo de pequeños.

Entonces, si su verdadero problema es que solo puede escribir un solo comando en su destino, puede escribir su propia "aplicación", haciendo un script sh en la carpeta / sbin y dejándolo sin la extensión .sh (porque estos se ejecutan con ./ o prefijo sh y no por nombre)

Lo escribí como ejemplo:

#!/bin/bash if [ $1 ] then VAR=$*; echo $VAR fi

Para este ejemplo, he creado el archivo / sbin / varrun. Lo he intentado con los siguientes comandos con salida exitosa (normal):

  • varrun ls
  • varrun uname
  • varrun uname -a

Tenga en cuenta que no he usado "comillas" en los comandos con espacios.