[Linuxtrent] Re: comando find

  • From: Lele Gaifax <lele@xxxxxxxxxxxxxxxxxxx>
  • To: linuxtrent@xxxxxxxxxxxxx
  • Date: Wed, 1 Oct 2008 11:11:20 +0200

On Wed, 1 Oct 2008 10:36:36 +0200
Renato Conotter <conotter@xxxxxxxxx> wrote:

> E già che ci siamo che differenza c'è tra " e '

Come già spiegato da Flavio, delimitare una stringa di caratteri con
le virgolette (singole o doppie) fa sì che la shell "veda" un singolo
parametro, anche quando la stringa contiene degli spazi. Se si usano
le virgolette doppie, vengono comunque espanse eventuali variabili
(introdotte dal simbolo $) e altre amenità (come i "backtip", o apici
inversi, che eseguono il sottocomando delimitato che viene sostituito
dall'output del comando stesso), mentre con usando gli apici
(l'apostrofo) praticamente tutte le espansioni vengono inibite.

Ad esempio:

    $ cd /tmp
    #
    $ ls
    claws-mail-1000  emacs1000  gconfd-lele  ns.lele.:0
    #
    # Con i backtip, `ls` viene sostituito dall'output del comando
    $ lista=`ls`
    #
    # Ora "lista" contiene l'output di ls, cioè un elenco di nomi
    # di file, *separati* da newline: essendo quest'ultimo
    # interpretato dalla shell come separatore (vedi IFS), un
    # "echo" della lista li elenca in fila, sulla stessa riga
    $ echo $lista
    claws-mail-1000 emacs1000 gconfd-lele ns.lele.:0
    #
    # Racchiudendo il parametro tra doppie virgolette, il comando
    # "echo" riceve *un solo* argomento, che una volta stampato
    # a schermo riflette il fatto che i nomi sono separati da un
    # "a capo"
    $ echo "$lista"
    claws-mail-1000
    emacs1000
    gconfd-lele
    ns.lele.:0
    #
    # Racchiudendolo invece tra singoli apici, il parametro non
    # viene espanso in alcun modo
    $ echo '$lista'
    $lista
    #
    # Una banale funzione che emette il conteggio degli argomenti
    $ funzione() {
    > echo "Numero argomenti: $#"
    > }
    #
    # Qui abbiamo tre parametri
    $ funzione a b c
    Numero argomenti: 3
    #
    # Qui uno solo
    $ funzione "a b c"
    Numero argomenti: 1
    #
    $ funzione $lista
    Numero argomenti: 4
    #
    $ funzione "$lista"
    Numero argomenti: 1
    #
    # Qui la shell espande i parametri, *prima di eseguire il comando*
    $ funzione *
    Numero argomenti: 4
    #
    # Qui no
    $ funzione "*"
    Numero argomenti: 1

Vedi http://www.network-theory.co.uk/docs/bashref/DoubleQuotes.html e
precedente.

ciao, lele.
-- 
nickname: Lele Gaifax    | Quando vivrò di quello che ho pensato ieri
real: Emanuele Gaifas    | comincerò ad aver paura di chi mi copia.
lele@xxxxxxxxxxxxxxxxxxx |                 -- Fortunato Depero, 1929.
--
Per iscriversi  (o disiscriversi), basta spedire un  messaggio con OGGETTO
"subscribe" (o "unsubscribe") a mailto:linuxtrent-request@xxxxxxxxxxxxx


Other related posts: