Antworten:
Exportierte und in derselben Befehlszeile festgelegte Variablen sind für das Programm sichtbar:
$ cat foo.sh
#!/bin/sh
echo "$foo"
$ foo=bar ./foo.sh
bar
$ export foo=bar
$ ./foo.sh
bar
Aber eine gemeinsame Idiom wäre Befehlszeilenargumente zu verwenden, bekommen sie auf die Positionsparameter eingestellt $1
, $2
usw.
$ cat arg.sh
#!/bin/sh
echo "$1 and $2"
$ ./arg.sh alpha beta
alpha and beta
Oder verwenden Sie "$@"
, um alle Befehlszeilenargumente abzurufen, möglicherweise nachdem Sie shift
einige feste Argumente von Anfang an entfernt haben. Für benannte Argumente ist es wahrscheinlich besser, getopt
( Manpage ) oder getopts
( POSIX , Tutorial in bash-hackers.org ) zu verwenden.
In jedem Fall müsste ein robustes Skript den Fall behandeln, dass einige der Variablen fehlen (nicht gesetzt).
Sie können dies (nur für diese Ausführung) auf folgende Weise tun:
id=3 sh abc.sh
Vor der Ausführung deklarieren (oder exportieren, hier nicht erforderlich):
id=3 ./myScript.sh
myScript.sh:
#!/bin/bash
echo "id = $id"
Ausgabe:
id = 3
cat > arg.sh
Skriptblock : würde arg.sh überschreiben, also muss es seincat arg.sh
. Kann nicht bearbeitet werden, da es weniger als 6 Zeichen sind, müssen Sie tun ...