
私の変数にはid
各トピックの名前が削除されました。各項目に特定のコマンドがあるので、次のように言いたいと思います。
if [[$id = s001]]; then do something. End
if [[$id = "s002"]]; then do something else. End
など。
正しいアプローチは何ですか?ありがとう
答え1
この問題を解決する一般的な方法は、case
宣言を使用することです。
case $id in
(s001) do something
;;
(s002) do something else
do something additional
;;
(s003) do something else entirely
;;
(*) do something unexpected
;;
esac
強化するいくつかの構文は次のとおりです。
- 私は開くかっこと閉じ括弧にオプションを入れるのが好きです。括弧を閉じることは必須ですが、視覚的なバランスを好みます。
- リストされているオプションの中に一致するオプションがない場合特定のコマンドを実行したい場合、この
(*)
オプションは包括的です。 - オプションに一致する各コマンドは
;;
;で終わる必要があります。セクションを終了するあまり一般的ではないオプションもあります。私はまた、;;
セクションが適切に終了したかどうかを簡単に知ることができるように、別々の行に「を置く」傾向があります。
答え2
Schallerが上で述べたように、イベントは非常に迅速に進行します。それ以外の条件文を好む場合は、次のように書くことができます。
if [[ -n "${id}" ]]; then
if [[ "${id}" == "s001" ]]; then
echo "do something"
elif [[ "${id}" == "s002" ]]; then
echo "do something else"
fi
fi
注:-nテストは、比較が正しくないようにIDが設定されていることを確認します。これは再評価を避けるための条件付きラッパーです。