Gibt es in bash eine Möglichkeit festzustellen, ob ein bestimmtes Skript aufgerufen wurde mit:
$ myscript.sh myfile
oder:
$ myscript.sh < myfile
In einigen Skripten habe ich immer auf den Inhalt von myfile
with zugegriffen $1
, aber jetzt möchte ich das Verhalten in verschiedenen Fällen ändern.
EDIT: Ich möchte auch einen dritten Fall, wenn er ohne Weiterleitung aufgerufen wird:
$ myscript.sh
quelle
< myfile
-t 0
liefert die richtigen Ergebnisse. Antwort aktualisiert.0
? Was ist der Unterschied? Es ist nicht in der Dokumentation.0
, Standardausgabe mit1
und Standardfehler mit2
. Wenn ich überprüfen wollte, ob meine Ausgabe an ein Terminal geht, würde ich verwenden[ -t 1 ]
Im Allgemeinen sind die Ausdrücke
$1
,$2
erweitern usw. zum 1., 2., usw. Argument auf der Linie Script - Befehl gegeben.Wenn Sie also ein Skript aufrufen als:
dann
$1
im Skript erweitert zumyfile
(und$2
,$3
usw. alle die leeren Zeichenkette sind).Wenn Sie ein Skript aufrufen als:
Die Umleitung von STDIN von
myfile
erfolgt über die übergeordnete Shell, sodass das Skript tatsächlich ohne Argumente aufgerufen wird und$1
auf die leere Zeichenfolge erweitert wird.quelle