Mi colega, Ryan, vinieron a mí con un error en su escritura del golpe, y yo identificaron el problema con esta prueba:resultados Asignar de comodines a una variable en Bash
$ mkdir ryan
$ mkdir ryan/smells-bad
$ FOO=ryan/smells-*
$ echo $FOO
ryan/smells-bad
$ touch $FOO/rotten_eggs
touch: cannot touch `ryan/smells-*/rotten_eggs': No such file or directory
De esto deduzco que la globbing ocurre durante el comando echo, no cuando se crea la variable FOO.
Tenemos un par de soluciones, en orden descendente de ungracefulness:
touch `echo $FOO`/rotten_eggs
O:
pushd
cd $FOO
touch rotten_eggs
popd
Pero tampoco es satisfactoria. ¿Me estoy perdiendo un truco?
Gracias, esto lo explica muy bien. –
Ese no es el problema en absoluto. El problema es que bash asigna el glob a la variable antes de la expansión. Incluso si el archivo existiera, se asignaría un glob a la variable, no a un nombre de archivo; y ese glob se expandiría en el uso –
@SamLiddicott El ejemplo del OP habría funcionado si existiera "rotten_eggs", por lo que fue más o menos el problema. El momento en que se expande el globo no es relevante en el breve ejemplo del PO. – jordanm