Mailinglist Archive: opensuse-de (6551 mails)

< Previous Next >
Re: bash Probleme
  • From: Lars Zimmermann <an@xxxxxxxxx>
  • Date: Mon, 5 Aug 2002 00:36:33 +0200
  • Message-id: <200208050036.33079.an@xxxxxxxxx>
Am Sonntag, 4. August 2002 18:11 schrieb Sascha Andres:
...
Das TRUE kommt aus der Schleife, das FALSE danach. Ich
wollte noch ein if [[ $running = "TRUE" ]] ; then ...
dranhängen, aber das kommt ja nie durch!?

Ich bin's immer gewöhnt, das die Sichtbarkeit einer globalen
Variable (ich nenn $running jetzt mal so), auch immer so
ist, aber running in der Schleife ist scheinbar ein anderes
running als ausserhalb. Wie komm ich an den Wert ran?

Ciao Sascha

Das Problem ist IMHO, daß durch die Pipes ein jeweiliges fork() der aktuellen
Shell erfolgt und somit die Kommandos in einzelnen Subshells laufen. Die
Variable running wäre somit in der Schleife eine lokale Definition. Änderst
Du dagegen das Skript nur leicht ab, so läuft die Schleife in der
aufgerufenen Shell:

#! /bin/sh

ps aux > .tmp
declare running="FALSE"

cat .tmp | grep "java" > .tmp1
while read line
do
running="TRUE"
echo $running
done < .tmp1
echo $running
rm .tmp*


< Previous Next >
References