はじめに Zshでread -pで標準入力を変数に格納しようとするとread: -p: no coprocessとエラーになります。 ちょっとハマったので対処方法を書きます。 原因 ZshとBashでreadコマンドのオプションが変更されています。 マニュアルによると、 -p Input is read from the coprocess. とあります。 coprocessについてはおそらくBashのものと同等の機能と思われます(すみません詳しくないです)。 solution read "変数名?プロンプト"とすればBashにおけるread -p "プロンプト" 変数名と同等の動作になります。 ZshでもBashでも動くようにします。 if [ -n "$ZSH_VERSION" ]; then read "STDIN?pronpt: " else read -p "pronpt: "