LoginSignup
4
1

More than 1 year has passed since last update.

Zshではread -pが動かない

Posted at

はじめに

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

参考

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1