[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Touch?



dea writes:
 > > var4=$var1$var2$var3 
 > 
 > vai di:
 > 
 > var4="$var1$var2$var3"
 
Come ha scoperto antispam, questa non funziona perché tu inibisci
l'uso degli spazi come separatori di token SOLO quando componi il
valore di $4.

Invece, per fare si che touch crei un solo file, bisogna inibire la
separazione dei token quando viene interpetata la command line di
touch.

Quattro grammi di teoria (e tonnellate di saccenza) riassumento man
bash. Potete anche saltare il seguito, se desiderate. Ricordatevi però
che quella di Unix, e quindi di GNU/Linux non è una interfaccia a
linea di comandi, ma un vero e proprio linguaggio di programmazione
interpertato, sia esso la Bourne shell (sh) o la Bourne Again Shell
(bash).

Ovvero cosa accade:

bash riceve 

touch $var58

per prima cosa sostituisce le variabili e dato che $58 vale 

123 567dmjs9 dmjs9

si ritrova la eseguire la linea 

touch 123 567dmjs9 dmjs9

Bash considera lo spazio come un separatore di token, per cui ottiene
4 token di cui il primo viene interpretato come programma da invocare
e i rimanenti come parametri sulla command line, ovvero al comando
touch vengono passati 3 parametri.

L'uso dei doppi apici, come specifica  la voce QUOTING di man bash[*],
fa si che bash non dia  significato particolare ai metacaratteri | & ;
( ) < > space tab (elenco preso dalla voce DEFINITIONS di man bash)
che per loro natura separano token. Come risultato a touch viene
passato un solo token.

I doppi apici lasciano il significato particolare ai caratteri $ ` e
\ ed infatti antispambox ha ottenuto il risultato che desiderava.

Qualora si necessiti di usare uno di questi tre caratteri, i.e. in
un nome di file particolarmente perverso, usare o il \ davanti al
singolo carattere.

[*] perdonate, ma non uso le traduzioni italiane di man. Sono
sufficienti gli eventuali errori della documentazione senza aggiungere
quelli di traduzione.

-- 
 /\           ___                                    Ubuntu: ancient
/___/\_|_|\_|__|___Gian Uberto Lauri_____               African word
  //--\| | \|  |   Integralista GNUslamico            meaning "I can
\/                 coltivatore diretto di software       not install
     già sistemista a tempo (altrui) perso...                Debian"

Warning: gnome-config-daemon considered more dangerous than GOTO


Reply to: