Variablen im Script gehen verloren

03/07/2008 - 15:35 von Helmut Schneider | Report spam
Hi,

#!/bin/sh
. /etc/profile
((pgrep -x httpd > /dev/null) || (pgrep -x apache2 > /dev/null)) && \
BACKUP_OPT="${BACKUP_OPT} /var/www/"
(pgrep -x java > /dev/null) && BACKUP_OPT="${BACKUP_OPT} \
/usr/local/apache-tomcat*/"
(pgrep -x mysqld > /dev/null) && BACKUP_OPT="${BACKUP_OPT} \
/var/db/mysql/backup/"
echo ${BACKUP_OPT}

Ergibt:

me:~# ./test.sh
/var/www/ /usr/local/apache-tomcat-6.0.13/ /var/db/mysql/backup/
me:~#

Ändere ich die mysql Zeile nach

(pgrep -x mysqld > /dev/null) && (BACKUP_OPT="${BACKUP_OPT} \
/var/db/mysql/backup/")

packe also Klammern um den BACKUP_OPT Ausdruck, bleibt nur übrig:

me:~# ./test.sh
/var/www/ /usr/local/apache-tomcat-6.0.13/
me:~#

Ich hab es auch schon mit 'export' probiert

(pgrep -x mysqld > /dev/null) && (echo "Test"; \
export BACKUP_OPT="${BACKUP_OPT} /var/db/mysql/backup/")

aber das tut auch nicht.

Wo ist der Fehler? Ich möchte vor dem Setzen des Verzeichnisses noch einen
Befehl ausführen.

Danke und Gruß, Helmut

No Swen today, my love has gone away
My mailbox stands for lorn, a symbol of the dawn
 

Lesen sie die antworten

#1 helmut
03/07/2008 - 15:51 | Warnen spam
Hallo, Helmut,

Du meintest am 03.07.08:

(pgrep -x mysqld > /dev/null) && BACKUP_OPT="${BACKUP_OPT} \
/var/db/mysql/backup/"
echo ${BACKUP_OPT}



[...]

Ändere ich die mysql Zeile nach

(pgrep -x mysqld > /dev/null) && (BACKUP_OPT="${BACKUP_OPT} \
/var/db/mysql/backup/")

packe also Klammern um den BACKUP_OPT Ausdruck, bleibt nur übrig:

me:~# ./test.sh
/var/www/ /usr/local/apache-tomcat-6.0.13/
me:~#



Klar - ist eines der klassischen Probleme bei der Shell-Programmierung.
Die runden Klammern isolieren, sie geben nur Errorlevel (Rückgabewerte,
numerisch) zurück.

Viele Gruesse
Helmut

"Ubuntu" - an African word, meaning "Slackware is too hard for me".

Ähnliche fragen