Puedo ejecutar este comando desde mi línea de comando:
cp -r folder/!(exclude-me) ./
Copiar recursivamente todos los contenidos, folder excepto el subdirectorio nombrado exclude-meen el directorio actual. Esto funciona exactamente como se pretendía. Sin embargo, necesito que esto funcione en un script bash que he escrito, donde tengo esto:
if [ -d "folder" ]; then
cp -r folder/!(exclude-me) ./
rm -rf folder
fi
Pero cuando ejecuto el script:
bash my-script.sh
Entiendo esto:
my-script.sh: line 30: syntax error near unexpected token `('
my-script.sh: line 30: ` cp -r folder/!(exclude-me) ./'
Y no sé por qué funciona desde el símbolo del sistema, pero exactamente la misma línea no funciona en un script bash.
bash
shell-script
nzifnab
fuente
fuente

env > file1en el script y ejecutar./it, y luegoenv > file2ysource it, con la esperanza de que hubiera encontrado una diferencia en elenvs, que no es el caso. ¿Cómo puedo enumerar programáticamente todas las diferencias entre dos shells (en este caso, interactivas versus no interactivas)?Agregue esta línea cerca de la parte superior de su script:
!(...)es una característica extendida de coincidencia de patrones, necesita laextglobopción habilitar para usarla. Ver shopt incorporado para más detalles.fuente