
Tengo un comando en mi script csh que puede dar al menos 2 líneas de salida, pero puede ser más. Estoy convirtiendo estas líneas en variables separadas que luego quiero pasar a otro comando. ¿Cómo configuro mi segundo comando para que recorra y ejecute cada variable generada desde el comando 1? A continuación se muestra lo que tengo que convierte la salida del comando 1 en variables.
set vars = `echo "command 1"`
set numRows = $#vars
if ($numRows < 2) then
echo "ERROR! $numRows rows!"
exit
endif
`echo '/command2 -L '$vars[1]'`
Respuesta1
Tenga en cuenta que estoy usando bash, no csh, porque no me odio. Pero puedes hacer todo esto en csh, sólo tendrías que traducir. Si desea trabajar en bash, simplemente ejecute "bash --login" primero y luego estará trabajando en bash.
Para realizar el tipo de tarea que describe en un script de shell, utilizamos tuberías y no bucles como lo haría en un lenguaje de programación. No me malinterpretes, ahísonestructuras de bucle en csh y bash, pero por lo que has descrito, lo hacemos de manera diferente.
Si tuviera un comando que produce múltiples líneas de salida y quisiera que otro comando actuara sobre esas líneas una a la vez, conectaría los dos comandos con una tubería | , así tal vez:
archivo gato.txt | grep "algunas palabras"
El comando grep procesa cada línea que llega desde STDIN, que está vinculada mediante una tubería a STDOUT del comando cat. Este es un ejemplo trivial, pero sirve.
otro:
eco 'uno, dos, tres' | tr',' '\n'
Eso reemplazará todas las comas con nuevas líneas, creando una salida de tres líneas a partir de una entrada de una línea.
Si quisiera agregar una extensión a los nombres de todos los archivos en un directorio, podría hacer algo como esto:
cd directory
for filename in *
do
mv ${filename} ${filename}.extension
done
El * es un patrón global de archivos. La globalización de archivos ocurre cuando un patrón en la línea de comando se reemplaza con cualquier nombre de archivo en el directorio actual que coincida con el patrón global. El * significa "cualquier cosa"