GNU/Linux >> Belajar Linux >  >> Linux

Tes Shell Untuk Menemukan Pola Dalam String?

Saya hanya ingin bertanya apakah ada perintah yang akan berfungsi pada shell umum (bash, dash, kornshell)? Seharusnya memeriksa apakah line variabel berisi bagian mana pun dari jalur.

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

Jawaban yang Diterima:

Ya, versi bash terbaru dapat melakukan ini:

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

Sintaks yang sama berfungsi di zsh dan ksh tetapi tidak di tanda hubung. Sejauh yang saya tahu, dash tidak memiliki kemampuan seperti itu.

Perhatikan bahwa regex Anda memeriksa apakah variabel $line berakhir dengan $PWD . Untuk memeriksa apakah $PWD cocok di mana saja di $line , hapus $ :

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

Linux
  1. Bagaimana Menguji Shell Apa yang Saya Gunakan Di Terminal?

  2. Tes Shell Apakah Beberapa Baris String Berisi Pola Tertentu Di Baris Terakhir?

  3. Bagaimana Menguji Kepatuhan Posix Dari Skrip Shell?

  1. Duplikat File X Kali Di Command Shell?

  2. Shell - Bagaimana menemukan direktori dari beberapa perintah?

  3. Temukan dan ganti dalam skrip shell

  1. Hanya Mengembalikan String yang Cocok Di Sed?

  2. Temukan Pola Dan Pindahkan?

  3. bash - temukan posisi indeks string dari substring