GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Der Musterabgleich funktioniert nicht im Bash-Skript

Globbing funktioniert so nicht, es sei denn, Sie aktivieren extglob Schale opt. Stattdessen empfehle ich die Verwendung von find :

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

bevor Sie diesen Befehl mit -delete ausführen Stellen Sie sicher, dass die Ausgabe korrekt ist


Methode mit Standardeinstellungen und ohne externe Prozesse:

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

Die erweiterte Glob-Syntax, die Sie verwenden möchten, ist standardmäßig deaktiviert. Sie müssen es in jedem Skript, in dem Sie es verwenden möchten, separat aktivieren.

shopt -s extglob

Skripte sollten ls nicht verwenden obwohl ich mir vorstelle, dass Sie es hier nur als Platzhalter verwendet haben.


Linux
  1. Metadatendatei stimmt nicht mit Prüfsumme überein – YUM-Fehler!

  2. Warum stimmt [a-z] mit Kleinbuchstaben in Bash überein?

  3. Warum funktioniert die automatische Vervollständigung nicht, wenn ein Befehlsname nach „Quelle“ eingegeben wird?

  4. Warum funktioniert die Regex in Bash nur, wenn es sich um eine Variable handelt und nicht direkt?

  5. Wie funktioniert cat << EOF in Bash?

Warum funktioniert `exit &` nicht?

Bash:Warum wird das übergeordnete Skript nicht bei SIGINT beendet, wenn das untergeordnete Skript SIGINT abfängt?

Was bedeutet set -e in einem Bash-Skript?

Touchpad funktioniert nicht auf Acer Aspire

Automatische Wiederholung funktioniert nicht

Wie funktioniert das <( cmd )-Muster in Bash?