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

Shell-Test, um ein Muster in einer Zeichenfolge zu finden?

Ich wollte nur fragen, ob es einen Befehl gibt, der mit gängigen Shells (bash, dash, kornshell) funktioniert? Es soll prüfen, ob die line Variable enthält einen beliebigen Teil des Pfades.

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

Akzeptierte Antwort:

Ja, neuere Versionen von bash können das:

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

Die gleiche Syntax funktioniert in zsh und ksh, aber nicht in Bindestrich. Soweit ich weiß, hat Dash keine derartigen Fähigkeiten.

Beachten Sie, dass Ihre Regex prüft, ob die Variable $line endet mit $PWD . Um zu prüfen, ob $PWD Übereinstimmungen irgendwo in $line , entfernen Sie das $ :

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

Linux
  1. Wie teste ich, welche Shell ich in einem Terminal verwende?

  2. Gibt nur die übereinstimmende Zeichenfolge in Sed zurück?

  3. Muster finden und verschieben?

  4. Wie testet man die Posix-Konformität von Shell-Skripten?

  5. Doppelte Datei x Mal in der Befehlsshell?

So finden Sie eine Zeichenfolge in einer Datei unter Linux

So suchen und ersetzen Sie Text, Wort oder Zeichenfolge in einer Datei

Manipulieren Sie {} Rückgabezeichenfolge von Find -exec?

So finden Sie die Länge der Zeichenfolge in Bash [Schneller Tipp]

Shell - Wie finde ich das Verzeichnis eines Befehls?

erwarteter Bezeichner vor String-Konstante