GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Ausgabe der cat-Anweisung in der Bash-Skriptschleife drucken

Sie verwenden die falsche Art von Anführungszeichen.

Sie müssen die umgekehrten Anführungszeichen anstelle des einfachen Anführungszeichens verwenden, damit das Argument ein Programm ist, das ausgeführt wird und den Inhalt an die forloop weiterleitet.

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

Zur besseren Lesbarkeit (wenn Sie Bash verwenden) können Sie es auch als

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

Wenn Sie erwarten, dass Sie jede Zeile erhalten (die for-Schleifen oben geben Ihnen jedes Wort), dann sind Sie vielleicht besser dran, wenn Sie xargs verwenden , so

cat /tmp/tables | xargs -L1 echo

oder als Schleife

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

Die einfachen Anführungszeichen sollten Backticks sein:

for tbl in `cat /etc/tables`

Dadurch erhalten Sie jedoch keine zeilenweise Ausgabe / Eingabe, sondern wortweise. Um Zeile für Zeile zu verarbeiten, sollten Sie Folgendes versuchen:

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

Linux
  1. So verwenden Sie die Bedingungsanweisung if else in Bash-Skript

  2. Bash Echo Die Befehlszeile wird in der Befehlszeile selbst ausgeführt (nicht in einem Skript)?

  3. Wie stoppe ich das Loop Bash-Skript im Terminal?

  4. So echoen Sie eine neue Zeile in Bash-Shell-Skripten

  5. Ist es möglich, ein Bash-Shell-Skript mit einem anderen Befehlszeilenprogramm interagieren zu lassen?

Bash Continue:Wie man eine Schleife fortsetzt

Bash-Skript für Schleife mit Beispielen erklärt

Farbige Shell-Script-Ausgabebibliothek

Senden simulierter Tastenanschläge in Bash

Zeilenumbruch an die Befehlsausgabe anhängen

Bash-Schleife zum Entpacken von passwortgeschützten Dateien