シェル スクリプトでオプション処理を行っているようです。これがそのイディオムです:
#! /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
(;;
をインデントするための規則がいくつかあります 、および一部のシェルでは、オプションを (--opt1)
として指定できます 、ブレースのマッチングを支援しますが、これが基本的な考え方です)
これは私にとってはうまくいきました。それはあなたが求めたことを正確に実行し、それ以上は何もしません (オプション処理はありません)。それが良いか悪いかは、投稿者の課題です :)
if [[ "$*" == *YOURSTRING* ]]
then
echo "YES"
else
echo "NO"
fi
これは $*
の特別な処理を利用しています およびスーパーテスト [[
を bash します …]]
パラメータ空間全体を (ワイルドカードを使用して) 検索するのはどうですか:
if [[ [email protected] == *'-disableVenusBld'* ]]
then
編集:わかりました、わかりました、それは一般的な答えではありませんでした.これはどうですか、完璧です!:
if [[ "${@#-disableVenusBld}" = "[email protected]" ]]
then
echo "Did not find disableVenusBld"
else
echo "Found disableVenusBld"
fi
Edit2:OK、OK、これは完璧ではないかもしれません... -param がリストの先頭にあり、-paramXZY または -paramABC とも一致する場合にのみ機能すると考えてください。元の問題は bash の文字列操作でうまく解決できると今でも思いますが、ここでは完全には解明できていません... -できますか??