Jag blev lite frustrerad över att jag blev tvungen att ta till den stora hammaren zsh för att få till beteendet jag ville i min fotoalbumgenerator simgal. Jag erkänner att jag var frustrerad och ville ha något som fungerade nu. Jag tog alltså till arrayer i zsh eftersom jag behövde komma åt föregående och nästa filnamn i en lista.

Det är inte alls så att jag tycker speciellt bra om Bourne shell eller speciellt illa om zsh. Jag använder zsh som mitt loginskal på de flesta platser! Det är bara det att jag gärna skulle ha sett att simgal kunde köras på vilken unixhoj som helst. Det är illa nog att behöva installera ImageMagick men att dra in ett skal till också? Det finns bergis de som är religiösa nog att tveka där.

Jag slutade tänka på det och accepterade mitt öde.

Trodde jag.

Den senaste tiden har jag skrivit en del script i rc, skalet i Plan 9 och Tenth Edition Unix. Då slog det mig: shift i rc finns ju i Bourne också! Duh! En sådan här konstruktion i en funktion i Bourne shell:

fileloop() 
{
    prev=''    
    for current
    do
        shift
        next=$1

        # do something to $prev, $current and $next 
        # ...

        prev=$current    
    done
}

ger mig ju både nuvarande, föregående och nästa filnamn! Ta-da!

Utifrån det blev jag lite inspirerad och skrev om hela simgal, nu med funktioner och ett väldigt enkelt huvudprogram:

[ -d $thumbdir ] || mkdir $thumbdir
[ -d $scaledir ] || mkdir $scaledir

header
fileloop $images
footer

SLOCCount tycker att det totalt är 127 rader kod.

Demoalbum finns här:

http://hack.org/mc/gallery/

Här är scriptet:

http://hack.org/mc/hacks/simgal/