私の構文が何らかの方法でネストされた条件に関連していると確信しているので、以下のエラーが発生します。デフォルトでは、私は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が指摘したように、あなたが望むなら、実際に最後のセクションの終結者をスキップすることができます。