Zum Inhalt springen

[bash] Falsche Parameterübergabe von Shellscript


Scratch

Empfohlene Beiträge

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...