GNU/Linux >> Tutoriales Linux >  >> Linux

La coincidencia de patrones no funciona en el script bash

Globbing no funciona de esa manera a menos que habilites extglob shell opt. En su lugar, recomiendo usar find :

find . -maxdepth 1 -not -name '<NAME>' -or -name '<NAME>' -delete

antes de ejecutar este comando con -delete asegúrese de que la salida sea correcta


Método con configuración predeterminada y sin procesos externos:

for f in *; do [[ $f =~ ^file[12]$ ]] || echo "$f"; done

La sintaxis global extendida que intenta usar está desactivada de forma predeterminada; tienes que habilitarlo por separado en cada script donde quieras usarlo.

shopt -s extglob

Los scripts no deben usar ls aunque me imagino que lo estabas usando simplemente como un marcador de posición aquí.


Linux
  1. Linux:¿por qué no funciona Setuid?

  2. En un script Bash, ¿cómo funciona el comando Continuar con bucles incrustados?

  3. ¿El comando Rm en Bash Script no funciona con variables?

  4. ¿Por qué Regex en Bash funciona solo si es una variable y no directamente?

  5. ¿Por qué `exit &` no funciona?

¿Por qué no funciona el autocompletado cuando se escribe un nombre de comando después de `fuente`?

¿Por qué este "mientras se lee" funciona en una terminal, pero no en un script de Shell?

¿Cómo funciona cat << EOF en bash?

Coincidencia de patrón de secuencia de comandos Bash

La repetición automática no funciona

¿Cómo funciona el patrón <( cmd ) en bash?