Wenn ich ein Programm namens "prog" habe, das nur ein Argument benötigt, kann ich schreiben:
./prog <<< 1
Aber wenn ich ein Programm habe, das 2 Argumente benötigt, warum funktioniert das nicht:
./prog <<< 2 3
Ich konnte keine Antwort finden Googeln. Wie kann das gehen?
Hinweis: Ich brauche dies, um eine zu schreiben .sh
bash
shell-script
Yemino
quelle
quelle
<<<
liefert keine Argumente , sondern liefert Input . Eine Eingabezeile, die aus2
Leerzeichen3
und Zeilenumbrüchen besteht, ist eine Eingabezeile und nicht zwei Argumente.Antworten:
Der
<<<
Bediener ist in derbash(1)
Manpage dokumentiert . Es ist für "here strings" (im Konzept ähnlich wie "here documents", die es schon seit Ewigkeiten in der Shell-Syntax gibt).Die Syntax:
… Wird erweitert
word
undcommand
als Standardeingabe übergeben.Es ist äquivalent zu:
Wenn Sie wirklich wollten, dass sowohl 1 als auch 2 als Standardeingabe übergeben werden (keine Argumente / Parameter), können Sie dies tun mit:
oder
Grundsätzlich müssen Sie die Leerstelle zwischen 1 und 2 umgehen, um zu verhindern, dass die Eingabe in zwei Wörter aufgeteilt wird.
quelle
Ich konnte keinen Verweis auf den Operator "<<<" für bash finden, aber es schien, als würde der Text unmittelbar nach dem Operator verwendet und als erste Variable analysiert.
Wenn Sie ein BASH-Skript schreiben, ist dies nicht erforderlich. Sie können einfach $ X für jede Variable verwenden und dann die Variablen zum Skript hinzufügen. Zum Beispiel:
Wenn Sie die obige Datei als "test.sh" speichern, müssen Sie sie ausführbar machen und als ausführen
./test.sh hello world
Verwendungszweck: ./test.sh Variable1 Variable2 Wert von Variable 1 ist Hallo Wert von Variable 2 ist Hallo Welt
$ 0 = der Name des Skripts. Wenn Sie 2 Parameter mit Leerzeichen übergeben möchten, zum Beispiel "Hello World" und "This is a test", würden Sie dies als ./test.sh "Hello World" bezeichnen, "his is a test".
quelle
So habe ich mein Problem gelöst:
quelle