Rückgabewert von Programmen prüfen / verarbeiten

I.MC

Watt soll denn hier hin?
Hi!

Mich nervt, dass Firefoc / -bird sich per icon klick nur einmal starten lassen. Läuft schon eine Instanz, dann kommt das Profilfenster und nervt. Man kann das aber umgehen mit einem kleinen Skript, da Firefox und Co eine Option liefern zu prüfen ob schon eine Instanz läuft. Wenn ja, kann man ein neues Fenster aufmachen auf eine andere Art und Weise, so dass nicht mit dem Profilmanager genervt wird.
Ich weiss leider nicht, was dieser Testaufruf an Rückgabewert liefert und bekomme es daher nicht hin.
Weiss jemand wie man das zu machen, ich habe wenig Ahnung von Shell Programmierung (wie lernt man das eigentlich, Buch?) Bis jetzt sieht das ja wirklich kleine Skript so aus.

Code:
#!/bin/sh
# 
#This small script gets you rid of the Firefox startup problem.
#Otherwise it wasn't possible to start a new window by just clicking on
#the Firefox icon

if [ 'firefox -remote "ping()"' ]
then
  #If there is a running Firefox instance 
  echo "Running"
  firefox -remote "openURL(about:blank,new-window)"
else
  #If there is no Firefox running
  echo "NOT running"
  firefox
fi

Gruß, incmc
 
OK, dann sieht es wie folgt aus:

Code:
firefox -remote "ping()"
if [ $? -eq 0 ]
then
  #If there is a running Firefox instance
  exec firefox -remote "openURL(about:blank,new-window)"
else
  #If there is no Firefox running
  exec firefox
fi
exit 3

Klappt auch. Aber nicht 100%tig. Wenn ich das Skript aufrufe und bereits eine Instanz läuft, dann macht er zwar brav ein neues Fenster auf, aber es wird noch ein anderes Programm in der Taskleiste angezeit. Dieses stürzt ab nach Timeout ab, bzw. verschwindet wieder aus der Leiste. Füre in den Befehl zum Öffnen eines neuen Fensters aber auf der Konsole aus, dann erscheint dies nicht.
Was ist das für ein Prozess, bzw, was mache ich falsch? Evtl. ist es ja auch das Skript, was sich nicht beendet etc.

Gruß, incmc
 
Das koennte gut sein. Schreib mal hinter die beiden Aufrufe noch ein &, damit das Skript weiter läuft.

Code:
firefox -remote "ping()"
if [ $? -eq 0 ]
then
  #If there is a running Firefox instance
  exec firefox -remote "openURL(about :blank,new-window)" &
else
  #If there is no Firefox running
  exec firefox &
fi
exit 0

Und exit 3 würde ich zu exit 0 machen oder ganz weglassen. NULL = OK :)
 
Das hab ich auch schon probiert. Es lag an KDE. Ich hab die Startrückmeldungen deaktiviert und schwup, alles gut. Komisch.

Gruß, incmc
 
Das gibt es bei KDE, wenn man ein link auf ein Programm anlegt unter Eigenschaften.

Gruß, incmc
 
Zurück
Oben