GNU/Linux >> Linux の 問題 >  >> Linux

bash スクリプトへのパラメータのいずれかが文字列と一致するかどうかを確認します

シェル スクリプトでオプション処理を行っているようです。これがそのイディオムです:

#! /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 の文字列操作でうまく解決できると今でも思いますが、ここでは完全には解明できていません... -できますか??


Linux
  1. BashスクリプトをBashにパイプするときにパラメータを設定する方法は?

  2. Bashスクリプトで文字列を分割する方法

  3. パラメータをBashスクリプトに渡す方法は?

  1. Bash のリストに変数が存在するかどうかを確認する

  2. bashスクリプトを終了する方法はありますが、ターミナルを終了しない

  3. Bash シェル スクリプト - フラグをチェックしてその値を取得する

  1. スクリプト内の bash シェル スクリプトおよび関数の変数スコープ

  2. ファイルがbashスクリプトの特定のディレクトリに存在するかどうかを確認するには?

  3. Bashでの$#の使用は何ですか