So weisen Sie die cat-Ausgabe eines Bash-Skripts einer Variablen in einem anderen Skript zu


29

Ich habe ein Bash-Skript, das eine Katzenausgabe erzeugt, wenn es ein Argument annimmt. Ich habe auch ein anderes Bash-Skript, das das erste Bash-Skript mit einem Argument ausführt, mit dem ich cat-Ausgaben erzeugen möchte. Wie speichere ich die vom ersten Bash-Skript erzeugten cat-Ausgaben in Variablen?

Antworten:


38
var=$( cat foo.txt )

würde die Ausgabe der catVariablen in speichern var.

var=$( ./myscript )

würde die Ausgabe von myscriptin der gleichen Variablen speichern .


5
Schneller Tipp für Bash-Neulinge wie mich, die Abstände und Nicht-Abstände sind alle wichtig, befolge genaues Muster! zum Beispiel var = $( cat foo.txt )wird nicht funktionieren
sojim2

@Dalker gibt es ein Limit wie groß die foo.txt sein kann? Ich habe über 10 MB Daten. Würde die Katze das Ganze aufbewahren? Ich möchte wissen, ob es auch für die Zukunft Grenzen gibt.
Mein Haus

@sojim Kennen Sie die Antwort darauf?
Mein Haus

1
@myhouse Nach dieser Antwort gibt es kein Limit aufgrund von Bash selbst, sondern das Limit ist der für die zugrunde liegende Umgebung zugewiesene Speicher, der natürlich variieren kann.
Dalker

3

Verwenden Sie die doppelten Anführungszeichen. Versuche dies

var="$(cat foo.txt)"

3
Es ist fast nie eine schlechte Idee, Dinge (insbesondere Dinge, die damit beginnen $) in doppelte Anführungszeichen zu setzen, und es tut hier nicht weh. Bei der Zuweisung zu einer Variablen hilft dies jedoch nicht wirklich.
G-Man sagt "wieder einzusetzen Monica

@ G-Man: Was ist, wenn diese Variable Zeilenumbrüche oder Tabulatoren enthält, die in der Variablen bleiben sollen?
Jvriesem

@ Jvriesem: Was ist, wenn es tut? Hast du eine Frage?
G-Man sagt, dass Monica

Wenn ich diesen Befehl ausführe, werden anscheinend alle Zeilenumbrüche entfernt.
K. Carpenter
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.