PDA

Visualizza la versione completa : [bash] curioso problema


mxa
10-02-2009, 20:51
sto scrivendo uno script bash, che mi produce in output un file contenente un altro script.
Quest altro script lo costruisco man mano in una variabile, tipo


MY_SCRIPT="
#!/bin/bash\n
#...
cp -r * mypath\n
#...
"


e alla fine faccio un


echo -e $MY_SCRIPT > miofile


il problema sta nel fatto che quel * nel cp -r mi viene rimpiazzato con i nomi di tutti i file nella directory corrente, il che e' molto strano dal momento che sta dentro alle virgolette, dovrebbe stamparmi un semplice *

Idee?

mxa
10-02-2009, 21:00
ho risolto con un workaround, in pratica invece di fare cp -r * faccio cp -r `ls`
ma sono curioso di sapere da dove deriva il problema

detroit
11-02-2009, 00:00
secondo me Ŕ questione di quoting :master:

vortex87
11-02-2009, 00:24
Possibile che sia colpa del parametro "-e" passato a echo? :stordita:

detroit
11-02-2009, 00:28
diventerÓ un indovinello sto post buonanotte :D

mxa
11-02-2009, 01:37
facendo delle prove dalla riga di comando e' un problema di quoting:



echo * -> stampa la lista delle diretory (come un ls, ma senza colori)
echo "*" -> stampa *

(stessa cosa con echo -e)


ma nel mio caso la * sarebbe tra virgolette... mah!

Z0rn
11-02-2009, 09:45
Certo che e' un problema di quoting... :(
Provato con "\*"
Consiglio in generale http://www.pluto.it/files/ildp/guide/abs/index.html, che si trova anche in pdf

mxa
11-02-2009, 15:40
si', provato \*, mi esce \*, ergo, l'* non e' un carattere da escapare.

Z0rn
11-02-2009, 16:42
E' echo che esplode gli argomenti:


MYVAR="*"
echo $MYVAR
> bin boot dati dev etc home lib ...


Con gli apici echo non esplode gli argomenti:


MYVAR="*"
echo "$MYVAR"
> *

Loading