はじめに
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: " STDIN
fi
echo $STDIN
参考