GNU/Linux >> Linux Esercitazione >  >> Linux

Stampa l'output dell'istruzione cat nel ciclo di script bash

Stai usando il tipo sbagliato di virgolette.

Devi usare le virgolette rovesciate piuttosto che le virgolette singole per fare in modo che l'argomento sia un programma in esecuzione che invia il contenuto al forloop.

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

Inoltre, per una migliore leggibilità (se stai usando bash), puoi scriverlo come

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

Se le tue aspettative sono di ottenere ogni riga (i cicli for sopra ti daranno ogni parola), allora potrebbe essere meglio usare xargs , come questo

cat /tmp/tables | xargs -L1 echo

o come loop

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

Le virgolette singole devono essere apici inversi:

for tbl in `cat /etc/tables`

Tuttavia, questo non ti darà output/input per riga, ma per parola. Per elaborare riga per riga, dovresti provare qualcosa come:

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

Linux
  1. Passare gli argomenti della riga di comando allo script Bash?

  2. Bash Echo La riga di comando eseguita sulla riga di comando stessa (non in uno script)?

  3. Script Bash:come assegnare ogni riga di output di comando ai valori in un array?

  4. Come fare eco a una nuova riga negli script di Bash Shell

  5. È possibile far interagire uno script di shell bash con un altro programma a riga di comando?

Bash continua:come riprendere un ciclo

Script Bash per Loop spiegato con esempi

Bash/sh istruzione 'if else'

Libreria di output di script di shell colorata

Invio di sequenze di tasti simulate in Bash

Aggiungi un'interruzione di riga all'output del comando