プロが教える店舗&オフィスのセキュリティ対策術

以下のzshのシエルスクリプト(list1.sh)を
./list1.sh
で実行させると

#!/bin/zsh

autoload -Uz catch
autoload -Uz throw

{
  echo foo
  throw 'ERROR'
  echo bar
} always {
  if catch * ; then
    echo $CAUGHT
  fi
}

# 結果
foo
ERROR
になるはずなのですが、なぜかfooだけしか出力されません。
$CAUGHTに'ERROR'の文字列が入るはずなのですが表示されません。
iMacのzshのヴァージョンは、zsh 5.8 (x86_64-apple-darwin20.0)
を使っています。
ご経験のある方、ご教示願えればと思います。

質問者からの補足コメント

  • ¥* または '*'
    とするとうまくいくようです。
    zshではワイルドカードの特殊文字「*」は、
    普通の文字にしないといけないということなのでしょうか?

    No.1の回答に寄せられた補足コメントです。 補足日時:2022/06/04 13:21

A 回答 (1件)

>catch *


ここで「*」が展開されてるのだと。エスケープしてみては。
この回答への補足あり
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!