Scratch Geschrieben 16. Februar 2006 Geschrieben 16. Februar 2006 Hi, kleines Problem mit Shellscripten und Parametern. script1 param1_dir=$1 echo $param1_dir if [ -d $param1_dir ] then export ABC=$param1_dir else export ABC=/opt/abc fi script2 param1_command=$1 param2_dir=$2 if [ $param1_command ] then . script1 $param2_dir else . script1 fi Problem ist nun wenn ich script1 alleine starte funktionierts wunderbar. Starte ich script2 mit ./script2 delete /opt/abc funktioniert alles. ./script delete funktioniert nicht weil bei script eins dann beim echo $param1_dir "delete" ausgegeben wird. Problem ist also das wenn ich script1 ohne Parameter aus script2 aufrufe übergibt er immer das $param1_command als $1. Weiss jemand wie ich das umgehen kann? Gruß Scratch Zitieren
shutdown-Frnow Geschrieben 16. Februar 2006 Geschrieben 16. Februar 2006 bisschen konfus das ganze. also ich blicke bei deiner erklährung und 5 minütigen studieren der skripte nicht durch was du vorhast. für was ist denn ABC? was meinst du mit ./script delete muss das in 2 scripten sein? vielleicht steh ich auch aufm schlauch aber ich verstehs nich... sorry :floet: Zitieren
1226 Geschrieben 16. Februar 2006 Geschrieben 16. Februar 2006 Weiss jemand wie ich das umgehen kann? Ja. Nimm die Punkte vor den Skriptaufrufen weg. Zitieren
Scratch Geschrieben 16. Februar 2006 Autor Geschrieben 16. Februar 2006 danke für die Antworten! Das sind natürlich nur Beispielscripte ohne Sinn. @shutdown-Frnow: leg die Dateien doch einfach mal an und probiers dann siehst du schon was ich meine. @1226: Dann geht garnichts. "command not found" ist der Fehler. Zitieren
shutdown-Frnow Geschrieben 16. Februar 2006 Geschrieben 16. Februar 2006 dann musst du statt "." ein "./" machen also ./script2 Zitieren
Scratch Geschrieben 16. Februar 2006 Autor Geschrieben 16. Februar 2006 Ok ... dazu hab ich dann noch eine Frage: Benutze ich . meinscript und es werden Variabeln exportiert sind diese danach immer noch mit env sichtbar. Benutze ich ./meinscript sind sie nicht in env sichtbar Gibt es sonst noch unterschiede? Zitieren
shutdown-Frnow Geschrieben 16. Februar 2006 Geschrieben 16. Februar 2006 naja ich kenen . meinscript z.B. im zusammenhang mit umgebungsvariablen also beispielsweise . .bashrc um die bashrc neu zu sourcen wenn du was dran verändert hast. ./meinscript ruft das script auf Zitieren
Schlaubi Geschrieben 16. Februar 2006 Geschrieben 16. Februar 2006 Ja sicher gibt es einen klaren Unterschied: ". file" bzw. "source file" sourced die Datei und das bedeutet, dass es so ist, als würde man hergehen und via copy&pasty die Datei file anzufügen, sprich der Inhalt der Datei file wird in eine andere Datei bzw. die Shell geschrieben. Zitieren
Scratch Geschrieben 16. Februar 2006 Autor Geschrieben 16. Februar 2006 Also leider geht es nicht wirklich ... ich hab jetzt aber 2 bessere Testscripte für jeden der mir noch helfen möchte. script1 parama=$1 echo "1 --- parama="$parama if [ $parama ] then echo "1 --- parama is set" if [ -d $parama ] then echo "1 --- dir: "$parama export ABC=$parama else echo "1 --- dir does not exist" fi else echo "1 --- standard: /opt/abc" export ABC=/opt/abc fi script2 command=$1 directory=$2 echo "2 --- command="$command echo "2 --- directory="$directory if [ $command ] then echo "2 --- command is set" if [ $directory ] then echo "2 --- directory is set" . script1 $directory else echo "2 --- directory is not set" . script1 fi else echo "2 --- command is not set" fi Hier die Ergebnisse des Scriptes $ ./script2 #FALL 1 korrekt 2 --- command= 2 --- directory= 2 --- command is not set $ ./script2 aaa #FALL 2 falsch 2 --- command=aaa 2 --- directory= 2 --- command is set 2 --- directory is not set 1 --- parama=aaa 1 --- parama is set 1 --- dir does not exist $ ./script2 aaa /opt/ #FALL 3 korrekt 2 --- command=aaa 2 --- directory=/opt/ 2 --- command is set 2 --- directory is set 1 --- parama=/opt/ 1 --- parama is set 1 --- dir: /opt/ $ ./script2 aaa bbb #FALL 4 korrekt 2 --- command=aaa 2 --- directory=bbb 2 --- command is set 2 --- directory is set 1 --- parama=bbb 1 --- parama is set 1 --- dir does not exist Bis auf Fall 2 geht alles. Wie man sieht übernimmt hier "parama" den wert von "command" und das soll es nicht ... Für Fall 2 sollte das Ergebnis "dir: /opt/abc" sein. Danke!! Gruß Scratch Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.