質問: bashスクリプトのいずれかのパラメーターがストリングと一致するかどうかを確認してください。 bashスクリプトに渡されたパラメータのいずれかが文字列と一致するかどうかを確認したいスクリプトを作成しようとしています。今セットアップする方法はif [ "$3" != "-discopperbld" -a "$4" != "-discopperbld" -a "$5" != "-discopperbld" -a "$6" != "-discopperbld"] しかし、パラメータが多数ある可能性があるので、これを行うより良い方法があるかどうか私は思っていませんでしたか?ありがとう編集:私はこのコードの塊を試してみて、オプション-disablevenusbldを付けてスクリプトを呼び出したが、それでも「starting build」が表示されます。私は何か悪いことをしていますか?前もって感謝します!while [ $# -ne 0 ] do arg="$1" case "$arg" in -disablevenusbld) disablevenusbld=true ;; -disablecopperbld) disablecopperbld=true ;; -disabletest) disabletest=true ;; -disableupdate) disableupdate=true ;; *) nothing="true" ;; esac shift done if [ "$disablevenusbld" != true ]; then echo "starting build" fi
回答: シェルスクリプトでオプション処理をしているようです。これがその慣用句です。#! /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 (;;をインデントするには2つの規約があります。また、いくつかのシェルでは、ブレースのマッチングに役立つように、オプションを(--opt1)として指定することができますが、これが基本的な考え方です)