Precedente: , Su: Funzioni di tipo generale   [Contenuti][Indice]


10.2.9 Stringhe con apici da passare alla shell

Michael Brennan propone il seguente modello di programma, da lui usato spesso:

#! /bin/sh

awkp='
   …
   '

specifica_programma_da_eseguire | awk "$awkp" | /bin/sh

Per esempio, un suo programma chiamato flac-edit73 ha questa forma:

$ flac-edit -song="Whoope! That's Great" file.flac

flac-edit genera in output il seguente script, da passare alla shell (/bin/sh) per essere eseguito:

chmod +w file.flac
metaflac --remove-tag=TITLE file.flac
LANG=en_US.88591 metaflac --set-tag=TITLE='Whoope! That'"'"'s Great' file.flac
chmod -w file.flac

Si noti la necessità di gestire gli apici nello script da passare alla shell. La funzione shell_quote() li prepara nel formato richiesto. SINGLE è la stringa di un solo carattere "'" e QSINGLE è la stringa di tre caratteri "\"'\"":

# shell_quote --- pone tra apici un argomento da passare alla shell

function shell_quote(s,             # parametro
    SINGLE, QSINGLE, i, X, n, ret)  # variabili locali
{
    if (s == "")
        return "\"\""

    SINGLE = "\x27"       # apice singolo
    QSINGLE = "\"\x27\""  # apice singolo incapsulato
    n = split(s, X, SINGLE)

    ret = SINGLE X[1] SINGLE
    for (i = 2; i <= n; i++)
        ret = ret QSINGLE SINGLE X[i] SINGLE

    return ret
}

Note a piè di pagina

(73)

I file con suffisso flac contengono normalmente dei brani musicali. metaflac è un programma che permette di modificare le informazioni [metadati] contenute all’inizio di un file di tipo flac.