Imprimer la sortie de l'instruction cat dans la boucle de script bash
Je suis en train d'exécuter une commande pour chaque ligne à venir à partir d'une commande cat. Je suis en se fondant sur l'exemple de code que j'ai obtenu à partir d'un fournisseur.
Voici le script:
for tbl in 'cat /tmp/tables'
do
echo $tbl
done
Donc je m'attendais à la sortie de chaque ligne dans le fichier. Au lieu de cela, je reçois ceci:
cat
/tmp/tables
Qui n'est évidemment pas ce que je voulais.
Je vais remplacer l'écho avec un effectif de commande qui s'interface avec une base de données.
Toute aide en redressant ce serait grandement apprécié.
source d'informationauteur geoffrobinson
Vous devez vous connecter pour publier un commentaire.
Vous utilisez le mauvais type de guillemets.
Vous avez besoin d'utiliser l'arrière-citations plutôt que la seule citation de faire de l'argument d'un programme en cours d'exécution et de la tuyauterie le contenu de la forloop.
Aussi pour une meilleure lisibilité (si vous utilisez bash), vous pouvez l'écrire comme
Si vos attentes sont à chaque ligne (pour les boucles ci-dessus vous donnera chaque mot), alors vous feriez mieux d'utiliser
xargs
à l'instar de ceou comme une boucle
Avec tout boucle:
Les apostrophes doivent être backticks:
Bien que, ce ne sera pas vous obtenir de sortie/d'entrée par ligne, mais, par la parole. Pour traiter ligne par ligne, vous devriez essayer quelque chose comme:
lire cette.
Vous pouvez faire beaucoup de l'analyse en bash par la redéfinition de l'IFS (Champ de Saisie élément de séparation), par exemple