GNU/Linux >> Znalost Linux >  >> Linux

Shell Test najít vzor v řetězci?

Jen jsem se chtěl zeptat, zda existuje nějaký příkaz, který by fungoval na běžných shellech (bash, dash, kornshell)? Má zkontrolovat, zda je line obsahuje jakoukoli část cesty.

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

Přijatá odpověď:

Ano, nejnovější verze bash to umí:

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

Stejná syntaxe funguje v zsh a ksh, ale ne v dash. Pokud vím, dash takové schopnosti nemá.

Všimněte si, že váš regulární výraz kontroluje, zda proměnná $line končí s $PWD . Chcete-li zkontrolovat, zda $PWD odpovídá kdekoli v $line , odstraňte $ :

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

Linux
  1. Jak otestovat, jaký Shell používám v terminálu?

  2. Test shellu, zda řetězec více řádků obsahuje zadaný vzor na posledním řádku?

  3. Jak otestovat shodu skriptů Shell s Posix?

  1. Duplicitní soubor X-krát v Command Shell?

  2. Manipulovat {} Vrátit řetězec z Find -exec?

  3. Jak najít délku struny v Bash [Rychlý tip]

  1. Shell - Jak najít adresář nějakého příkazu?

  2. očekávaný identifikátor před řetězcovou konstantou

  3. adb:Najděte PID z prostředí adb