Jadi, Anda memiliki string yang panjang dan Anda ingin memeriksa apakah string ini berisi substring dalam skrip bash Anda.
Ada lebih dari satu cara untuk memeriksa substring di bash shell. Saya akan menunjukkan beberapa contoh sederhana terlebih dahulu, diikuti dengan skrip bash keren yang menggunakan konsep ini dalam skenario dunia nyata.
Memeriksa substring di bash menggunakan pernyataan if else
Jika Anda terbiasa dengan pernyataan kondisional di bash, Anda dapat menggunakannya untuk memeriksa apakah string berisi substring dengan cara berikut:
if [[ $fullstring == *"$substr"* ]];
Contoh sederhana untuk memeriksa substring
Tanda kurung ganda diperlukan di sini. Saya menganggap ini sebagai cara asli karena tidak menggunakan alat lain. Mari saya jelaskan cuplikan di atas dengan contoh yang tepat.
Inisialisasi variabel dengan string panjang:
[email protected]:~$ fullstring="This is a string with a stretch"
Sekarang, simpan kata “stretch” di dalam variabel bernama substr1
:
[email protected]:~$ substr="stretch"
Mari kita buat perbandingan substring:
[email protected]:~$ if [[ $fullstring == *"$substr"* ]]; then
Di sini, * berarti nol atau lebih karakter. Saya harap Anda terbiasa dengan konsep kutipan dalam skrip bash. $substr di dalam tanda kutip menggantikannya dengan nilainya.
Pada dasarnya, Anda memeriksa apakah string lengkap cocok dengan jenis pola xxxxsubstrxxxx.
Anda juga dapat menggunakan substring secara langsung daripada menggunakannya melalui variabel seperti ini:
[email protected]:~$ if [[ $fullstring == *"stretch"* ]]; then
Anda mendapatkan intinya. Biarkan saya melengkapi skrip ini dengan pernyataan lain yang menunjukkan pesan alternatif jika substring tidak ditemukan:
#!/bin/bash
fullstring="This is a string with a stretch"
substr="stretch"
if [[ $fullstring == *"$substr"* ]]; then
echo "Found $substr!"
else
echo "$substr not found!"
fi
Anda dapat dengan mudah melihat bahwa jika Anda menjalankan skrip shell di atas, ia akan menemukan substringnya.
[email protected]:~$ bash substr.sh
Found stretch!
Contoh dunia nyata yang lebih baik untuk menemukan substring di bash
Substring bisa sangat membantu dalam skrip untuk "berinteraksi" dengan pengguna. Gunakan perintah baca agar skrip bash Anda menerima masukan pengguna.
echo "Hey there..what is your name?"
read Name
echo "Hello "$name"! The Matrix Resurrections trailer is here! Is your pill Red or Blue?"
read Pill
if [[ $Pill == *"Red"* || $Pill == *"red"* ]]; then
echo "Welcome..to the real world "$Name"!"
else
echo "Wake Up "$Name"!"
fi
Berikan izin yang dapat dieksekusi dan jalankan skrip:
[email protected]:~$ chmod +x makeyourchoice.sh
[email protected]:~$ ./makeyourchoice.sh
Output untuk skrip di atas:
Hey there..what is your name?
avimanyu
Hello avimanyu! The Matrix Resurrections trailer is here! Is your pill Red or Blue?
I have Red pill
Welcome..to the real world avimanyu!
Di sini, saya membuat kondisi if sedikit lebih baik dengan memperhatikan dua kemungkinan kemungkinan sensitivitas huruf. Hanya Red
adalah substring di sini. Tapi red
merupakan masukan yang mungkin juga. Jadi, saya menambahkan kondisi lain. ||
menunjukkan “atau”. Jika Anda memasukkan Red
, itu adalah substring. Tapi meskipun red
bukan satu, saya harus menambahkannya.
Menemukan substring di bash menggunakan perintah grep
Inilah cara lain untuk menemukan substring dalam string di bash. Gunakan perintah grep dengan cara ini:
if grep -q "$substr" <<< "$fullstring"; then echo "Found"; fi
q
options berarti grep akan berada dalam mode senyap, tidak menampilkan output apa pun. Harap diingat bahwa ada 3 <, bukan hanya 2.
Saya harap tutorial singkat ini membantu Anda dalam mencari substring tertentu dalam sebuah string. Jika Anda memiliki pertanyaan atau saran, jangan ragu untuk meninggalkan komentar di bawah. Btw..pil apa yang kamu pilih? Apakah Anda membuat pilihan Anda?