script bash pour vérifier le nom de fichier commence par chaîne attendue
Du système d'exploitation OS X avec un script bash:
sourceFile=`basename $1`
shopt -s nocasematch
if [[ "$sourceFile" =~ "adUsers.txt" ]]; then echo success ; else echo fail ; fi
Les travaux ci-dessus, mais que si l'utilisateur de sources d'un fichier appelé adUsers_new.txt
?
J'ai essayé:
if [[ "$sourceFile" =~ "adUsers*.txt" ]]; then echo success ; else echo fail ; fi
Mais le générique ne fonctionne pas dans ce cas.
Je suis en train d'écrire ce script pour permettre à l'utilisateur d'avoir différentes itérations de la source nom de fichier, qui doit commencer par aduser
et ont la .txt
l'extension de fichier.
Je crois que vous avez besoin de ne pas citer le membre de droite de l'
=~
de l'opérateur.OriginalL'auteur chop | 2014-08-21
Vous devez vous connecter pour publier un commentaire.
Dans
bash
, vous pouvez obtenir les 7 premiers caractères d'une variable shell avec:et les quatre derniers avec:
Armés de cette connaissance, il suffit d'utiliser les expressions où vous utilisez normalement la variable elle-même, quelque chose comme le script suivant:
Vous pouvez le voir en action avec la transcription suivante:
OriginalL'auteur paxdiablo
=~
opérateur nécessite regexp, pas de générique.==
accepte les caractères génériques, mais ils ne devraient pas être cités:Vous pouvez utiliser une regexp, bien sûr, mais il serait un peu exagéré:
Veuillez noter que les regexp est ouvert par défaut (
a
= =.*a.*
), tandis que glob est fermé (a
!=*a*
).OriginalL'auteur Dmitry Alexandrov