Comodines entre comillas

32

Será fácil, pero en mis recuerdos, cuando se utilizan scripts de shell, el uso de comillas dobles permitiría expandir el globbing y las variables.

Pero en el siguiente código:

#!/bin/sh

echo *.sh
echo "*.sh"
echo '*.sh'

echo $LANG
echo "$LANG"
echo '$LANG'

Me sale este resultado:

bob.sh redeployJboss.sh
*.sh
*.sh
en_US.utf8
en_US.utf8
$LANG

Entonces, ¿las comillas simples evitan la expansión global Y variable pero las comillas dobles solo permiten la expansión variable y no la globalización?

¿Puedo incluir cualquier patrón de cotización?

tisek
fuente

Respuestas:

26

Tienes razón: el globbing no funciona entre comillas simples o dobles. Sin embargo, puede interpolar el globbing con cadenas entre comillas dobles:

$ echo "hola mundo" * .sh "adiós mundo"
hola mundo [lista de archivos] adiós mundo
Flup
fuente
66
O incluso echo "$hello and $goodbye".*(mezclar expansiones variables, espacios y un globo en la misma "palabra".
vonbrand
1
Globbing no parecen funcionar en este caso, echo /path/to/file/*${variable}. ¿Cómo hago un glob mientras agrego un correo electrónico interpolado?
CMCDragonkai
2
@CMCDragonkai echo "$FOLDER_PATH"/*.extensionfunciona bien para mí, al contrario de la respuesta aceptada, tuve que eliminar el espacio en blanco entre el "y el *. Espero eso ayude.
LostBalloon
@CMCDragonkai, @LostBalloon Uso el siguiente patrón cuando quiero usar globos con variables que pueden tener espacios:(cd "$FOLDER_PATH" && echo *.extension)
Steven Darnell