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

Eine Werteliste an ein Bash-Skript weiterleiten?

Ich habe ein Skript. myScript .

Es dauert zwei Argumente. myScript arg1 arg2 .

Nehmen wir an, ich habe drei Arten von Argumenten.

argA1 argB1
argA2 argB2
argA3 argB3

Gibt es eine Möglichkeit, jede Zeile an myScript weiterzuleiten. Ich bin offen dafür, den Satz von Argumenten in einer Datei zu haben, vielleicht verwende ich xargs. Nicht sicher, was untersucht werden soll.

Also würde ich einen Befehl wie das folgende Faux-Beispiel ausführen:

cat myFile | xargs > myScript

Kein anderes Skript zu haben, nur Befehle auf der Kommandozeile.

Akzeptierte Antwort:

Nur:

xargs -l1 <myFile myScript

-l1 sagt xargs um myScript auszuführen einmal für jede 1 l Eingabezeile mit den Worten auf diesem 1 l werden als separate Argumente übergeben.

Für xargs , Wörter werden durch Leerzeichen getrennt, und Sie können immer noch Leerzeichen (sogar Zeilenumbrüche) in einem Wort haben, indem Sie Anführungszeichen verwenden. Beachten Sie jedoch, dass während xargs unterstützt "..." , '...' und \ denn wie bei den meisten Shells unterscheidet sich das Parsing von Bourne-ähnlichen Shells. Insbesondere gibt es keine Backslash-Verarbeitung in weder "..." noch '...' und nur \ kann einem Zeilenumbruch entkommen.

Zum Beispiel myFile könnte enthalten:

word1.1 word1.2
"word 2.1" 'word 2.2'
"word'3.1" 'word"3.2'
'word"'"4'1" word\"4\'2
'word '\
5.1 "word "\
5.2

Und

xargs -l1 <myFile printf 'First word: "%s", second word: "%s"\n'

würde produzieren:

First word: "word1.1", second word: "word1.2"
First word: "word 2.1", second word: "word 2.2"
First word: "word'3.1", second word: "word"3.2"
First word: "word"4'1", second word: "word"4'2"
First word: "word
5.1", second word: "word
5.2"

Mit der GNU-Implementierung von xargs , können Sie es verbessern zu:

xargs -l1 -r -a myFile myScript

Das hat den Vorteil, dass stdin in Ruhe gelassen wird und myScript nicht ausgeführt wird wenn myFile ist leer.


Linux
  1. Die Bash‘?

  2. Typeset -a Gibt Fehler im Skript an?

  3. Bash-Skript zum Ausfüllen einer Vorlage?

  4. Bash für Schleifenbeispiele

  5. Bash-Skript-Musterabgleich

35 Bash-Skriptbeispiele

So führen Sie ein Bash-Skript aus

Basisname mit Leerzeichen in einem Bash-Skript?

Führen Sie das Bash-Skript als Daemon aus

Fügen Sie dem Pfad ein Bash-Skript hinzu

Linux-Bash-Skript zum Extrahieren der IP-Adresse