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??