exit-code in script auswerten.
-
HannsW schrieb:
in meinem MAKEFILE möchte ich abbrechen, sobald eine Aufgabe fehlerhaft war.
Unter DOs war das ERRORLEVEL.
Danke Hannsder exit-code wird in der Variablen $? gespeichert.
auf bald
oenone
-
HannsW schrieb:
Hi Doc,
entschuldige, da hatte ich mich nicht korrekt ausgedrückt.Ich habe ein shellscript indem ich nach vielen "vi xxx" das makefile , und danach
die Zieldatei starte. Bei Makefehlern möchte ich das unterbrechen.
Hab mir in /etc/init.d/ diverse scroípte angesehen, aber meines klappt doch nicht:..... #!/bin/bash // nach supertux vi mytest.cc vi btrieveClass.cc vi btrieveClass.hh vi aliasArzt.cc vi aliasArzt.hh make -f mytest.mak if ["$1" == "0"]; then ./mytest fi ./makemytest: line 9: [: missing `]'
HM ????
Was ist falsch
Hannsif ["$1" == "0"]; then
in
if [ "$1" == "0" ]; then
ändern. (Die Leerzeichen)
oenone schrieb:
HannsW schrieb:
in meinem MAKEFILE möchte ich abbrechen, sobald eine Aufgabe fehlerhaft war.
Unter DOs war das ERRORLEVEL.
Danke Hannsder exit-code wird in der Variablen $? gespeichert.
auf bald
oenoneMist, wenn ich das früher gewusst hätte
-
hättste mal meinen beitrag gelesen :p
-
DrGreenthumb schrieb:
hättste mal meinen beitrag gelesen :p
ich geb's auf.... dümmer als heute kann ich nicht mehr werden.
-
supertux schrieb:
(Die Leerzeichen)
super supertux, danke für die Lehr-Zeichen
geht allerdings auch ohne#!/bin/bash
weil der Pfad auf die bash schon in meinem Profil steht
oder?
-
Es geht auch ohne #!/bin/bash aber bash muss nicht unbedingt unter /bin/bash installiert sein. Die erste Zeile ist dazu da, dass wenn man eine Datei ausführt (./script), dass auch den richtigen Interpreter genommen wird. bash und sh sind recht ähnlich, aber nicht gleich und wenn du das #!/bin/sh weglässt und das script ausführst, dann bekommst du auch Fehler. Natürlich wenn du sh script.sh ausführst, wird es kein Problem geben. Deswegen ist es ratsam immer den Interpreter anzugeben, damit ist man auf jeden Fall sicher, dass alles reibungslos läuft.
-
herzlichen Dank, und gute Nacht, bin dann mal ein bißchen weg vom Rechner
-
Was passiert, wenn du #!/bin/bash nicht angibst, ist Shell abhängig. Teilweise wird #!/bin/sh augerufen und teilweise die aktuelle shell benutzt. Wobei du bei nicht Standardkompatiblen Dingen aufpassen musst, da /bin/sh nicht immer auf die bash zeigt. So installieren viele Leute kleinere Shells ((D)ASH) um das booten zu beschleunigen. Andere Unix-Derivate benutzen andere Shells oder die Benutzer benutzen Shells ala ZSH.
Also bitte immer den Ausführstring setzen.
-
Danke, soweit sacheint es bei mir angekommen zu sein.in der aktuellen Form
#!/bin/bash vi mytest.cc vi btrieveClass.cc vi btrieveClass.hh vi aliasArzt.cc vi aliasArzt.hh make -f mytest.mak echo $1 if [ "$1" == "0" ]; then ./mytest fi
wird mytest nie ausgeführt
Der echo befehl auch nicht. Ich hatte dann gedacht. daß "echo" mir einen Fehlercode > 0 liefert, und es rausgenommen, aber keine Änderung.
Hanns
-
Lies dir nochmal ganz genau dieses Posting durch:
DrGreenthumb schrieb:
proga && progb
b wird nur ausgeführt wenn a erfolgreich (errorcode=0) war
proga || progb
b wird nur ausgeführt wenn a nicht erfolgreich (errorcode!=0) war
Ansonsten steht in der Variable $? der Rückgabewert.
Edit: Ein Makefile bricht doch ohnehin ab, wenn irgendwas schief geht
Daraus kann man entnehmen, dass
1. Der Rückgabewert nicht in $1 sondern in $? steht
2. \begin{verbatim}make -f mytest.mak && ./mytest\end{verbatim} sowieso viel einfacher ist.
-
mastercpp schrieb:
Daraus kann man entnehmen, dass
1. Der Rückgabewert nicht in $1 sondern in $? steht
2. \begin{verbatim}make -f mytest.mak && ./mytest\end{verbatim} sowieso viel einfacher ist.Das ist mir jetzt richtig unangenehm- nicht richtig lesen zu können-
Gilt "Gleitsichtbrille" als Ausrede?und 2.) ist eh viel schöner
Habt Dank