GNU/Linux >> Tutoriels Linux >  >> Linux

La correspondance de modèle ne fonctionne pas dans le script bash

Globbing ne fonctionne pas de cette façon sauf si vous activez extglob coquille opt. Au lieu de cela, je recommande d'utiliser find :

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

avant d'exécuter cette commande avec -delete assurez-vous que la sortie est correcte


Méthode avec paramètres par défaut et sans procs externes :

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

La syntaxe glob étendue que vous essayez d'utiliser est désactivée par défaut; vous devez l'activer séparément dans chaque script où vous souhaitez l'utiliser.

shopt -s extglob

Les scripts ne doivent pas utiliser ls bien que j'imagine que vous l'utilisiez simplement comme espace réservé ici.


Linux
  1. Pourquoi la substitution de processus Bash ne fonctionne-t-elle pas avec certaines commandes ?

  2. Pourquoi [a-z] correspond-il aux lettres minuscules dans Bash ?

  3. Linux Setuid ne fonctionne pas ?

  4. Pourquoi la saisie semi-automatique ne fonctionne-t-elle pas lors de la saisie d'un nom de commande après `source` ?

  5. La commande Rm dans le script Bash ne fonctionne pas avec la variable ?

Dans un script bash, comment la commande Continuer fonctionne-t-elle avec les boucles intégrées ?

Pourquoi ce "pendant la lecture" fonctionne-t-il dans un terminal, mais pas dans un script shell ?

Pourquoi `exit &` ne fonctionne pas ?

Comment cat << EOF fonctionne-t-il dans bash?

Correspondance de modèle de script bash

ssh-copy-id ne fonctionne pas