$? innerhalb eines Bash-Sciptes setzen
Hallo Leute! Gibt es eine effektivere Methode (builtin-Kommando) als (exit N) , um innerhalb eines Bash-Scriptes den Wert des Parameters $? zu verändern? -- Danke, Alex
Hi Peter,
Zeig mal ein Anwendungsbeispiel fuer dieses Vorhaben.
Mein Anwendungsfall: Muß die SuSE-Startscripte für Postfix umschreiben, damit ich mehrere Instanzen unabhängig voneinander starten, stoppen, laufen lassen und als Service einrichten kann. /usr/lib/postfix/master gibt Exit-Codes zurück, die mit dem dem Framework nicht kompatibel sind (die rc_-Funktionen arbeiten z.T. mit $?). Also muß ich sie entsprechend umsetzen. -- Viele Grüße, Alex
On Sun, 2003-10-19 at 22:02, Alexander Veit wrote:
Hallo Leute!
Gibt es eine effektivere Methode (builtin-Kommando) als (exit N) , um innerhalb eines Bash-Scriptes den Wert des Parameters $? zu verändern? Nein.
man bash: ... Special Parameters The shell treats several parameters specially. These parameters may only be referenced; assignment to them is not allowed. ... ? Expands to the status of the most recently executed foreground pipeline. D.h. Du kannst $? nicht setzen. Ralf
Ralf Corsepius wrote:
On Sun, 2003-10-19 at 22:02, Alexander Veit wrote:
Hallo Leute!
Gibt es eine effektivere Methode (builtin-Kommando) als (exit N) , um innerhalb eines Bash-Scriptes den Wert des Parameters $? zu verändern?
Nein.
man bash: ... Special Parameters The shell treats several parameters specially. These parameters may only be referenced; assignment to them is not allowed. ...
? Expands to the status of the most recently executed foreground pipeline.
D.h. Du kannst $? nicht setzen.
Das würde ich so nicht stehen lassen: ~> true ~> echo $? 0 ~> false ~> echo $? 1 CU Dierk
On Mon, 2003-10-20 at 09:30, dfroehling wrote:
Ralf Corsepius wrote:
On Sun, 2003-10-19 at 22:02, Alexander Veit wrote:
Hallo Leute!
Gibt es eine effektivere Methode (builtin-Kommando) als (exit N) , um innerhalb eines Bash-Scriptes den Wert des Parameters $? zu verändern?
Nein.
D.h. Du kannst $? nicht setzen.
Das würde ich so nicht stehen lassen: Nun ja, für mich ist die Bedeutung des Wortes "setzen" immer noch gleichbedeutend mit "zuweisen".
~> true ~> echo $? 0 ~> false ~> echo $? 1
<pedantic> Du setzt $? nicht. Die Shell gibt den Exit-Status des letzten ausgeführten Kommandos zurück. </pedantic> Ralf
Hi, On Mon, 20 Oct 2003, Michael Matz wrote:
As-if rule angewandt, und schon ist es dasselbe, nur das die Zuweisung eine lustige Syntax hat ;-)
Grmbl. Zu frueh abgeschickt. Ich wollte noch addieren: ... nur das der initiale Poster ja nicht nur nach 0/1 gefragt hat, sondern nach beliebigen Exitcodes, und da scheint mir "( exit x )" ganz ok zu sein. Ciao, Micha.
Michael Matz wrote:
Hi,
On Mon, 20 Oct 2003, Michael Matz wrote:
As-if rule angewandt, und schon ist es dasselbe, nur das die Zuweisung eine lustige Syntax hat ;-)
Grmbl. Zu frueh abgeschickt. Ich wollte noch addieren: ... nur das der initiale Poster ja nicht nur nach 0/1 gefragt hat, sondern nach beliebigen Exitcodes, und da scheint mir "( exit x )" ganz ok zu sein.
Um nochmal drauf zurückzukommen: - Er wollte den Wert verändern. 0/1 sind zwei verschiedene Werte. Er kann also egal welchen Wert er vorher hatte den Wert ändern. ;-) (Es stand ja nicht da in welchen Wert!) - Und es sollte mit einem builtin-Kommando geschehen: false, true, exit alles builtin... CU Dierk
On Mon, 2003-10-20 at 16:18, Michael Matz wrote:
Hi,
On Mon, 20 Oct 2003, Michael Matz wrote:
As-if rule angewandt, und schon ist es dasselbe, nur das die Zuweisung eine lustige Syntax hat ;-)
Grmbl. Zu frueh abgeschickt. Ich wollte noch addieren: ... nur das der initiale Poster ja nicht nur nach 0/1 gefragt hat, sondern nach beliebigen Exitcodes, und da scheint mir "( exit x )" ganz ok zu sein. Nur wozu? Statt
if expression ; then ( exit 2 ) fi echo "STATUS $?" kann man in einem Script auch eine "$status"-Variable explizit mitführen. Ralf
Hello, On Mon, 20 Oct 2003, Michael Matz wrote:
On Mon, 20 Oct 2003, Michael Matz wrote:
As-if rule angewandt, und schon ist es dasselbe, nur das die Zuweisung eine lustige Syntax hat ;-)
Grmbl. Zu frueh abgeschickt. Ich wollte noch addieren: ... nur das der initiale Poster ja nicht nur nach 0/1 gefragt hat, sondern nach beliebigen Exitcodes, und da scheint mir "( exit x )" ganz ok zu sein.
set_status() { return $1; } $ set_status 42; echo $? 42 Das ist IMO eleganter als die sub-shell via (). -dnh --
You can probably make sendmail play chess if you configure it right. Judging by its conf file it already does. Checkmate in 3 moves. -- Anthony Mandic in comp.sys.sun.admin
participants (6)
-
Alexander Veit
-
David Haller
-
dfroehling
-
Michael Matz
-
Peter Wiersig
-
Ralf Corsepius