philip@Trinity ~ $ bash --version
GNU bash, versie 4.1.5(1)-release (x86_64-pc-linux-gnu)
Copyright (C) 2009 Free Software Foundation, Inc.
De licentie is GPLv3+: GNU GPL versie 3 of later.
Zie http://gnu.org/licenses/gpl.html voor de volledige tekst.
Dit is vrije software; u mag het vrijelijk wijzigen en verder verspreiden.
Er is GEEN GARANTIE, voor zover de wet dit toestaat.
philip@Trinity ~ $
Even ter verduidelijking: ik noem het script hierboven van chromisX even `test.sh`; mijn script noem ik `rs-doc.sh`
Het volgende doet zich nu voor: Als ik het test-scriptje van chromisX uitvoer met "bash test.sh" doet die het goed.
Verander ik in mijn script de kopregel door "#!/bin/sh" en run het met "bash -x rs-doc.sh" dan slaat ie het stuk vanaf function gewoon over alsof het er niet staat.
ik post hieronder even het volledige script; het werkt prima, maar ik wilde de functie erin zetten om een loop creëren indien de vraag om de backup uit te voeren met nee word beantwoord, en daarna na een bepaalde tijd de vraag herhaalt.
#!/bin/bash
#
# Script voor het maken van een backup met rsync
# de output van rsync wordt doorgestuurd naar zenity
# die er een mooie melding van laat zien. (via rsync.awk)
bron='/home/philip/rsync-testmap/'
doel='server1:/srv/pub/testmap/'
path='/home/philip/Documenten/systeem/routines'
lock_file='/var/lock/rs-thb.pid'
prog_name=`basename $0`
# Ga naar het pad waar de routines staan
cd $path
# Geef een notificatie in het panel
/usr/bin/zenity --display :0 --notification --text="Er moeten backups gemaakt worden!"
#Geef een waarschuwing dat de backups beginnen
function vraag {
`/usr/bin/zenity --display :0 --question --text="Er moet een backup gemaakt worden van "$bron". \rGaan we dat nu doen?"`
}
# Indien annuleren:
if [ "$?" = 1 ]; then
/usr/bin/zenity --error --display :0 --text="Update geannuleerd."
sleep 600
vraag ;
else
#check of er een lockfile is
if [ -f "${lock_file}" ]; then
# check of de pid van de lockfile nog bestaat
lock_pid=`cat ${lock_file}`
lock_pgm=`ps -p ${lock_pid} -o comm=`
# check of de pid nog geldig is
if [ "${lock_pgm}" = "${prog_name}" ]; then
/usr/bin/zenity --warning --display :0 --title "WAARSCHUWING!" --text="Vorige backup is nog bezig, of niet goed afgesloten.. !"
exit;
else
# verwijderen van oude lock
/usr/bin/zenity --info --display :0 --title "Lock-file" --text="Verwijderen van oude lock-file van vorig of oud proces"
rm ${lock_file}
fi
fi
# Maken van de lock-file
echo $$ > ${lock_file}
# check of alles goed gegaan is
lock_pid=`cat ${lock_file}`
if [ $$ -ne ${lock_pid} ]; then
# Er kan geen nieuwe lock-file gemaakt worden
/usr/bin/zenity --warning --display :0 --title "WAARSCHUWING!" --text= "Kan geen lock-file maken, er is een conflict met pid ${LOCK_PID}"
exit 1;
fi
rsync -avz -e ssh --progress --delete-after $bron $doel |
awk -f test.awk |
/usr/bin/zenity --progress --display :0 --width 400 --title "Backing up $bron" \
--text="Backing up...." ;
# Er wordt op annuleren gedrukt
if [ "$?" = 1 ] ; then
zenity --error --text="Update afgebroken!";echo $?
exit ;
fi
# Verwijderen lock-file
rm ${lock_file}
fi
Laptop: (2x) Packard Bell Easynote met Linux-Mint 9 (x64)
Home-server: Debian Lenny