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.
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)?