GNU/Linux >> Tutoriels Linux >  >> Linux

Imprimer la sortie de l'instruction cat dans la boucle de script bash

Vous utilisez le mauvais type de guillemets.

Vous devez utiliser les guillemets inversés plutôt que les guillemets simples pour que l'argument soit un programme en cours d'exécution et transmettant le contenu à la boucle for.

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

Aussi pour une meilleure lisibilité (si vous utilisez bash), vous pouvez l'écrire comme

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

Si vos attentes sont d'obtenir chaque ligne (les boucles for ci-dessus vous donneront chaque mot), alors vous feriez peut-être mieux d'utiliser xargs , comme ça

cat /tmp/tables | xargs -L1 echo

ou en boucle

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

Les guillemets simples doivent être des backticks :

for tbl in `cat /etc/tables`

Cependant, cela ne vous donnera pas une sortie/entrée par ligne, mais par mot. Pour traiter ligne par ligne, vous devriez essayer quelque chose comme :

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

Linux
  1. Comment utiliser l'instruction conditionnelle if else dans le script bash

  2. Comment arrêter le script Loop Bash dans le terminal ?

  3. Est-il possible de faire interagir un script shell bash avec un autre programme en ligne de commande ?

  4. Lire ligne par ligne dans le script bash

  5. exécution d'un script php (fonction php) sous linux bash

Bash continue :comment reprendre une boucle

Comment faire écho à une nouvelle ligne dans les scripts shell bash

Script bash pour la boucle expliqué avec des exemples

Simulation de la touche ENTRÉE dans le script bash

Bibliothèque de sortie de script shell coloré

texte d'écho avec une nouvelle ligne dans bash