GNU/Linux >> Belajar Linux >  >> Linux

Periksa apakah ada parameter ke skrip bash yang cocok dengan string

Sepertinya Anda sedang melakukan penanganan opsi dalam skrip Shell. Inilah idiom untuk itu:

#! /bin/sh -

# idiomatic parameter and option handling in sh
while test $# -gt 0
do
    case "$1" in
        --opt1) echo "option 1"
            ;;
        --opt2) echo "option 2"
            ;;
        --*) echo "bad option $1"
            ;;
        *) echo "argument $1"
            ;;
    esac
    shift
done

exit 0

(Ada beberapa konvensi untuk mengindentasi ;; , dan beberapa shell memungkinkan Anda memberikan opsi sebagai (--opt1) , untuk membantu pencocokan tanda kurung, tetapi ini adalah ide dasarnya)


Ini bekerja untuk saya. Itu melakukan persis seperti yang Anda minta dan tidak lebih (tidak ada pemrosesan opsi). Apakah itu baik atau buruk adalah latihan untuk pembuat poster :)

if [[ "$*" == *YOURSTRING* ]]
then
    echo "YES"
else
    echo "NO"
fi

Ini memanfaatkan penanganan khusus $* dan bash super-test [[]] tanda kurung.


Bagaimana dengan menelusuri (dengan karakter pengganti) seluruh ruang parameter:

if [[ [email protected] == *'-disableVenusBld'* ]]
then

Sunting:Oke, oke, jadi itu bukan jawaban yang populer. Bagaimana dengan yang ini, sempurna!:

if [[ "${@#-disableVenusBld}" = "[email protected]" ]]
then
    echo "Did not find disableVenusBld"
else
    echo "Found disableVenusBld"
fi

Sunting2:Oke, oke, mungkin ini tidak sempurna ... Pikirkan ini hanya berfungsi jika -param ada di awal daftar dan juga akan cocok dengan -paramXZY atau -paramABC. Saya masih berpikir masalah aslinya dapat diselesaikan dengan sangat baik dengan manipulasi string bash, tetapi saya belum memecahkannya di sini... -Bisakah Anda??


Linux
  1. Bagaimana cara meneruskan parameter ke skrip Bash?

  2. Periksa apakah ada variabel dalam daftar di Bash

  3. Cara apa pun untuk keluar dari skrip bash, tetapi tidak keluar dari terminal

  1. Bash Script:Periksa Apakah File Adalah File Teks?

  2. Bagaimana saya bisa mendapatkan nomor terakhir dari string di bash?

  3. Apa cara terbaik untuk memeriksa apakah volume dipasang di skrip Bash?

  1. Bash Echo Baris Perintah Dieksekusi Di Baris Perintah Itu Sendiri (bukan Dalam Script)?

  2. Bagaimana Cara Mengatur Parameter Saat Pipa Bash Script Ke Bash?

  3. Kembalikan kecocokan regex dalam skrip Bash, alih-alih menggantinya