Automatizzare script bash
Ciao a tutti. Nel solito script Bash che sto scrivendo (che mi servirà per creare automaticamente delle macchine virtuali Xen partendo da immagini preconfezionate) ho inserito questo pezzo per impostare la scelta dell'immagine da utilizzare: if [ $IMMAGINE ]; then case $IMMAGINE in etch-minimal) IMG_ORIGINE=/vserver/img/debian-minimal.img ;; *) immagini ;; esac fi La variabile $IMMAGINE è impostata da getopts in base all'argomento dato al parametro -o. In questo esempio, devo creare un case per ogni immagine .img che creo in /vserver/img/. immagini esegue una funzione presente nello stesso script che mostra l'elenco delle immagini disponibili (in questo caso solo etch-minimal: immagini () { echo Immagini disponibili: echo echo * etch-minimal: Debian 4.0 Etch minimale exit 1 } Vorrei automatizzare la cosa, evitando di dover aggiungere, ogni volta che aggiungo una nuova immagine, un nuovo case nella porzione di codice di cui sopra. In pratica, vorrei che lo script controllasse l'elenco dei file con estensione .img presenti nella directory /vserver/img/, e in base al loro nome impostare le varie immagini disponibili, in maniera dinamica. Inoltre, vorrei che se esiste un file /foo/[nome-immagine].post.sh, questo venga eseguito ad un certo punto dell'esecuzione dello script, senza che questo venga interrotto. Non ho la più pallida idea di come si possano fare queste due cosette, perchè non ho per nulla esperienza in bash. Mi potete aiutare? Grazie mille! Ciao.
Re: Automatizzare script bash
Il giorno gio, 23/08/2007 alle 19.08 +0200, shacky ha scritto: Ciao a tutti. Nel solito script Bash che sto scrivendo (che mi servirà per creare automaticamente delle macchine virtuali Xen partendo da immagini preconfezionate) ho inserito questo pezzo per impostare la scelta dell'immagine da utilizzare: il pacchetto xen-tools l'hai già guardato? -- Davide Corio email: davide.corioatdomsense.com web: http://www.domsense.com -- Per REVOCARE l'iscrizione alla lista, inviare un email a [EMAIL PROTECTED] con oggetto unsubscribe. Per problemi inviare un email in INGLESE a [EMAIL PROTECTED] To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]
Re: Automatizzare script bash
shacky ha scritto: Vorrei automatizzare la cosa, evitando di dover aggiungere, ogni volta che aggiungo una nuova immagine, un nuovo case nella porzione di codice di cui sopra. In pratica, vorrei che lo script controllasse l'elenco dei file con estensione .img presenti nella directory /vserver/img/, e in base al loro nome impostare le varie immagini disponibili, in maniera dinamica. Puoi fare una cosa del tipo: found=0 for img in `ls /vserver/img/*.img` do if [ $img == $IMMAGINE ]; then found=1 break fi done if [ ! found ]; then immagini exit 1 fi # se arrivi qui c'è un valore valido in $IMMAGINE Inoltre, vorrei che se esiste un file /foo/[nome-immagine].post.sh, questo venga eseguito ad un certo punto dell'esecuzione dello script, senza che questo venga interrotto. Questo è abbastanza facile supponendo che tu abbia il nome immagine in una variabile $IMGNAME fai if [ -x /foo/$IMGNAME.post.sh ]; then source /foo/$IMGNAME.post.sh fi Non ho la più pallida idea di come si possano fare queste due cosette, perchè non ho per nulla esperienza in bash. Mi potete aiutare? Ti consiglio questi due capitoli di appunti di informatica libera [1] e [2] e il bash programming howto [3] Tieni presente che i frammenti di codice li ho buttati giù al volo e che potrebbero darti problemi di sintassi, quindi magari vanno adattati un po. Ciao [1]http://a2.pluto.it/a2172.htm#almltitle1018 [2]http://a2.pluto.it/a2179.htm#almltitle1089 [3]http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO.html -- Fabio Napoleoni [EMAIL PROTECTED] Computer Science is no more about computers than astronomy is about telescopes Edsger W. Dijkstra -- Per REVOCARE l'iscrizione alla lista, inviare un email a [EMAIL PROTECTED] con oggetto unsubscribe. Per problemi inviare un email in INGLESE a [EMAIL PROTECTED] To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]