In de vele voorbeelden van !/bin/bash scripting zie ik de meeste gebruikers nog steeds gebruik maken van het verouderde "echo" commando. Verder worden terugkerende zaken zoals het afvangen van gebruikers-invoer in eenvoudige read weggezet. Als alleen (J)a of (N)ee ingevoerd kan worden, mag een andere invoer niet de executie-flow van het programma verstoren... Daarvoor bestaan er functies binnen !/bin/bash.
Derhalve onderstaand scriptje, waar ook de Newbies onder ons hun voordeel kunnen halen. Kopiƫer dit scriptje in een tekstverwerker en sla het op als envdemo.sh. Zet het execute-bit aan. En start het scriptje in een console met ./envdemo.sh.
Denk nu niet dat ik dit scriptje ergens gedownload en vertaald heb. Het is een mix van vele maanden/jaren zoeken en zelf uittesten. Die onzin wil ik jullie besparen. Loop de syntax eens door en leer begrijpen hoe !/bin/bash werkt. Het gebruik van variabelen, functies, printf ipv echo, while do, if then etc...
Alles zit in dit kleine scriptje. Doe er je voordeel mee. Hier komt de code:
#!/bin/bash
#########################################################################################
# SCRIPTING TEST: envdemo.sh #
# Copyright Marcel van den Berg ( AKA Masy ) #
# #
# This software is GPL and free to use #
#########################################################################################
# Program information #
#########################################################################################
PROGRAM_NAME="envdemo script"
PROGRAM_version="1.0.0"
PROGRAM_releasedate="08-08-2009"
PROGRAM_copyright_owner="Masy"
PROGRAM_copyright="Copyright 2007-2009, ${PROGRAM_copyright_owner}"
PROGRAM_license="${PROGRAM_NAME} ${PROGRAM_version}\n${PROGRAM_copyright}"
#########################################################################################
RESPONSE="" # STRING-VARIABELE WAAR INVOER READ WORDT BEWAARD
#########################################################################################
# GLOBALE FUNCTIES #
#########################################################################################
keypresspause() # WACHT OP EEN TOETSDRUK VOOR DOORGAAN
{
printf "[Druk een willekeurige toets om door te gaan]\n"
read a
}
keypressyes() # WACHT OP TOETSDRUK j/J/y -> RESULT IN RESPONSE
{
RESPONSE=""
while RESPONSE=""; do
read -p "Kies (J)a of (N)ee: " RESPONSE
if [ "$RESPONSE" = "j" -o "$RESPONSE" = "J" -o "$RESPONSE" = "y" ]
then
break
fi
if [ "$RESPONSE" = "n" -o "$RESPONSE" = "N" ]
then
break
fi
RESPONSE=""
printf "INVOER-FOUT: Geen (J)a of (N)ee ingevoerd.\n"
printf "U kunt ook CTRL-C gebruiken om dit script af te breken\n"
done
}
#########################################################################################
# START INPUT-DEMO #
#########################################################################################
clear
printf "${PROGRAM_license}\n"
printf "Programma gestart op `date '+%A %d %B %Y - %H:%M:%S '`\n"
printf "Onder `uname -s -r ` op een `uname -m` processor\n"
printf "Linuxversie: `uname -v`\n\n"
keypressyes
if [ "$RESPONSE" = "n" -o "$RESPONSE" = "N" ]
then
echo "Nee gekozen, het programma werd afgebroken"
exit
fi
printf "Programma ${PROGRAM_NAME} doorlopen:\nGeƫindigd op `date '+%A %d %B %Y - %H:%M:%S '`\nOK...\n\n"
Moderator edit: code-tags toegevoegd