GNU/Linux >> Tutoriels Linux >  >> Linux

Test Shell pour trouver un motif dans une chaîne ?

Je voulais juste demander s'il existe une commande qui fonctionnerait sur les shells courants (bash, dash, kornshell) ? Il est censé vérifier si la line variable contient n'importe quelle partie du chemin.

if [[ $line =~ "$PWD"$ ]] ;then

Réponse acceptée :

Oui, les versions récentes de bash peuvent le faire :

$ pwd
/home/terdon
$ line="I'm in /home/terdon"
$ [[ "$line" =~ "$PWD"$ ]] && echo yes
yes

La même syntaxe fonctionne dans zsh et ksh mais pas dans dash. Autant que je sache, dash n'a pas de telles capacités.

Notez que votre regex vérifie si la variable $line se termine avec $PWD . Pour vérifier si $PWD correspond n'importe où dans $line , supprimez le $ :

$ line="I'm in /home/terdon, are you?"
$ [[ "$line" =~ "$PWD" ]] && echo yes
yes

Linux
  1. Ne renvoyer que la chaîne correspondante dans Sed ?

  2. Trouver un modèle et déplacer ?

  3. Dupliquer le fichier X fois dans le shell de commande ?

  4. Comment trouver la longueur d'une chaîne dans Bash [Astuce rapide]

  5. Comment convertir la sortie du shell de Linux en HTML ?

Comment trouver une chaîne dans un fichier sous Linux

Comment rechercher et remplacer du texte, un mot ou une chaîne dans un fichier

Comment tester la conformité Posix des scripts Shell ?

Manipuler la chaîne de retour {} à partir de Find -exec ?

Shell - Comment trouver le répertoire d'une commande ?

identifiant attendu avant la constante de chaîne