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

Wie verwende ich die Zeilen einer Datei als Argumente eines Befehls?

command `< file`

übergibt den Dateiinhalt an den Befehl auf stdin, entfernt jedoch Zeilenumbrüche, was bedeutet, dass Sie nicht jede Zeile einzeln durchlaufen können. Dafür könnten Sie ein Skript mit einer 'for'-Schleife schreiben:

for line in `cat input_file`; do some_command "$line"; done

Oder (die mehrzeilige Variante):

for line in `cat input_file`
do
    some_command "$line"
done

Oder (mehrzeilige Variante mit $() statt `` ):

for line in $(cat input_file)
do
    some_command "$line"
done

Referenzen:

  1. For-Loop-Syntax:https://www.cyberciti.biz/faq/bash-for-loop/

Wie bereits erwähnt, können Sie die Backticks oder $(cat filename) verwenden .

Was nicht erwähnt wurde, und ich denke, es ist wichtig zu beachten, dass Sie sich daran erinnern müssen, dass die Shell den Inhalt dieser Datei nach Leerzeichen zerlegt und jedes gefundene "Wort" Ihrem Befehl als Argument gibt. Und während Sie möglicherweise ein Befehlszeilenargument in Anführungszeichen setzen können, damit es Leerzeichen, Escape-Sequenzen usw. enthalten kann, wird das Lesen aus der Datei nicht dasselbe tun. Wenn Ihre Datei beispielsweise Folgendes enthält:

a "b c" d

Die Argumente, die Sie erhalten, sind:

a
"b
c"
d

Wenn Sie jede Zeile als Argument ziehen möchten, verwenden Sie das while/read/do-Konstrukt:

while read i ; do command_name $i ; done < filename

Das machst du mit Backticks:

echo World > file.txt
echo Hello `cat file.txt`

Wenn Ihre Shell (unter anderem) bash ist, eine Abkürzung für $(cat afile) ist $(< afile) , also würden Sie schreiben:

mycommand "$(< file.txt)"

Dokumentiert in der Bash-Manpage im Abschnitt „Command Substitution“.

Lassen Sie Ihren Befehl alternativ von stdin lesen, also:mycommand < file.txt


Linux
  1. So verwenden Sie den Linux-Grep-Befehl

  2. So verwenden Sie den Verlaufsbefehl unter Linux

  3. So verwenden Sie den Tar-Befehl unter Linux

  4. Wie verwende ich den basename-Befehl?

  5. So verwenden Sie sed, um die letzten n Zeilen einer Datei zu entfernen

So verwenden Sie den Linux-Kopfbefehl

So verwenden Sie den Linux-diff-Befehl

So verwenden Sie den Linux-Ping-Befehl

So verwenden Sie Sudo und die Sudoers-Datei

So verwenden Sie den Befehl uniq zum Verarbeiten von Listen in Linux

Wie verwende ich den Gzip-Befehl unter Linux?