GNU/Linux >> Tutoriales Linux >  >> Linux

Imprima la salida de la declaración cat en el bucle de script bash

Está utilizando el tipo de comillas incorrecto.

Debe usar comillas inversas en lugar de comillas simples para que el argumento sea un programa que se ejecuta y canaliza el contenido al forloop.

for tbl in `cat /tmp/tables` 
do 
    echo "$tbl"
done

También para una mejor legibilidad (si está usando bash), puede escribirlo como

for tbl in $(cat /tmp/tables) 
do 
    echo "$tbl"
done

Si sus expectativas son obtener cada línea (los bucles for anteriores le darán cada palabra), entonces es mejor que use xargs , así

cat /tmp/tables | xargs -L1 echo

o como un bucle

cat /tmp/tables | while read line; do echo "$line"; done

Las comillas simples deben ser acentos graves:

for tbl in `cat /etc/tables`

Aunque, esto no le dará salida/entrada por línea, sino por palabra. Para procesar línea por línea, debe probar algo como:

cat /etc/tables | while read line
    echo $line
done

Linux
  1. Cómo usar la declaración condicional if else en Bash Script

  2. ¿Pasar argumentos de línea de comando a Bash Script?

  3. Bash Echo ¿La línea de comando se ejecutó en la propia línea de comando (no en un script)?

  4. ¿Cómo detener el script Loop Bash en la terminal?

  5. Cómo hacer eco de una nueva línea en Bash Shell Scripts

Bash continue:Cómo reanudar un bucle

Bash Script:¿Cómo asignar cada línea de salida de comando a valores en una matriz?

Bash Script for Loop explicado con ejemplos

declaración Bash/sh 'if else'

Biblioteca de salida de scripts de shell de colores

texto de eco con nueva línea en bash