Bashスクリプトのネストされた条件文エラー

Bashスクリプトのネストされた条件文エラー

私の構文が何らかの方法でネストされた条件に関連していると確信しているので、以下のエラーが発生します。デフォルトでは、私はtelegram_botに空のメッセージを送信したくありません。空のメッセージを検出するとエラーが発生します。最初のIFはNULLが有効であることを確認します。しかし、32行ではそうではありません。

xxx.sh: line 32: syntax error near unexpected token `)'
xxx.sh: line 32: `    *)       # contains nothing or only spaces'


 26 if  [ -z "$message" ]; then
 27         echo "Please pipe a message to me!"
 28 else
 29   case $message in
 30     *[!\ ]*) # contains non-space
 31         sendTelegram                                                                                                                                                                                                                      
 32     *)       # contains nothing or only spaces
 33         DO NOTHING...
 34   esac
 35 fi

答え1

ケース条件を終了する必要があります。

case $message in
    *[!\ ]*) # contains non-space
        sendTelegram
    ;;                                                                                                                                                                                                          
    *)       # contains nothing or only spaces
        DO NOTHING..
    ;;
esac

条件付き構造

;;各節は;&、、、またはで終わる必要があります;;&

この演算子を使用すると、;;最初のパターンマッチング以降の後続マッチングは試行されません。;&代わりにinを使用すると、;;次のセクションに関連付けられているコマンドのリスト(存在する場合)で実行が続行されます。;;&代わりにinを使用すると、;;シェルは次のセクションのパターンをテストし(存在する場合)、一致が成功したときに関連するコマンドのリストを実行します。


Kusalanandaが指摘したように、あなたが望むなら、実際に最後のセクションの終結者をスキップすることができます。

関連情報