sslug-teknik team mailing list archive
-
sslug-teknik team
-
Mailing list archive
-
Message #66465
Shell-magi
Jeg har et problem med at et shell-script ikke afslutter når det skal.
Hvis der i nedenstående uddrag opstår en fejl skal scriptet afslutte men
det gør det ikke. Linien med echo til sidst bliver afviklet lige meget
hvad.
---
if dd if=/dev/scd0 of=/dev/null bs=1 count=1 ; then
./cd-info | {
while read line
do
count=$[$count + 1]
case $count in
2) CD_HOST="$line";;
3) CD_DATE=`echo "${line}" | cut -d'.' -f1`;;
esac
done
if [ "$CD_HOST" != "$HOSTNAME" ] || [ "$CD_DATE" != "$CD" ]; then
error_mail "FEJL" "$SUBJECT" "$MAILTO"
exit 1
fi
}
fi
echo "Der tages backup $CD, $CD_DATE"
---
Problemet jeg er løbet ind i er nok det der er omtalt i E4 i bash faq.
Mit problem er bare, hvordan kommer jeg uden om denne feature?
Det er meningen at backuppen ikke skal køre hvis der opstår en fejl.
Det var også svært at sikre at CD_HOST etc. blev gemt når man forlod
løkken, men det sikrede { } rundt om while-løkken. Hvordan man løser det
her ved jeg virkeligt ikke.
Håber der sidder en script-haj der har prøvet noget lign og løst det.
Prøvede at sætte backup = ./cd-info
. og så teste på backup. Men den
ser ud til ikke at være sat.
Hilsen
Jan Andersen
Follow ups