GNU/Linux >> Linux Esercitazione >  >> Linux

Shell test per trovare un motivo in una stringa?

Volevo solo chiedere se esiste un comando che funzioni su shell comuni (bash, dash, kornshell)? Dovrebbe controllare se la line variabile contiene qualsiasi parte del percorso.

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

Risposta accettata:

Sì, le versioni recenti di bash possono farlo:

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

La stessa sintassi funziona in zsh e ksh ma non in dash. Per quanto ne so, dash non ha tali capacità.

Nota che la tua regex sta controllando se la variabile $line finisce con $PWD . Per verificare se $PWD corrisponde ovunque in $line , rimuovi il $ :

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

Linux
  1. Verifica della shell se la stringa di più righe contiene il modello specificato nell'ultima riga?

  2. File duplicato X volte nella shell dei comandi?

  3. Come convertire l'output della shell di Linux in HTML?

  4. Shell - Come trovare la directory di alcuni comandi?

  5. Trova e sostituisci nello scripting della shell

Come trovare una stringa in un file su Linux

Come trovare e sostituire testo, parola o stringa in un file

Funzione Bash per trovare il modello di corrispondenza dei file più recente

identificatore previsto prima della stringa costante

adb:trova PID dalla shell adb

bash - trova la posizione dell'indice della stringa della sottostringa