bash agumente einlesen
-
hallo.
gibt es in der bash oder in deiner anderen shell die moeglichkeit die argumente nach einem befehl zu bearbeiten.
z.b. #starte programm.sh 3
wie lese ich diese zeile ein und speichere programm.sh und 3 in variablen.
danke
lg
michi
-
> cat param.sh #!/bin/sh echo $* echo $0 echo $1 echo $2 echo $3 echo $@ > chmod a+x param.sh > ./param.sh 1 2 3 1 2 3 ./param.sh 1 2 3 1 2 3
HTH
-
hallo.
danke fuer die rasche antwort. Das mit der uebergabe funktioniert jetzt schon super!
ich hab nur noch ein kleines problem.ich will dasss der User Parameter eingeben MUSS!
if ["$1" -ne ""] then echo "Argument fehlt! Eingabeformat:Befehl name \"Text\" " exit 1 fi
Okay.
Wenn der User jetzt nichts eingibt dann kommt die meldung "Argument fehlt .."Wenn der Benutzer Parameter eingibt dann schreibt er
line 12: [name: command not foundHat jemand einen Tip fuer mich!
danke
lg michi
-
Das Problem ist der Ausdruck "" in deiner if-Anweisung. Die if-Anweisung startet das Programm 'test' mit den Argumenten in den eckigen Klammern. Also bleibt bei dir übrig 'test asdfasdf -ne '.
Du kannst aber die Anzahl der Argumente mit $# auswerten (also 'if [ $# -eq 0 ]').Übrigens: Mit dem Befehl 'shift' kannst du die Parameter um 1 "verschieben":
$2 -> $1
$3 -> $2
usw.Das kann sehr nützlich sein, wenn man z. B. beliebig viele Dateinamen als Parameter angeben können soll und diese dann in einer Schleife abgearbeitet werden:
while [ $# -gt 0 ] do echo $1 shift done
Martin