コンテンツにスキップ

Zshのread qエラー対策

最終更新日: 2021-03-17

MSYS2 の zsh で .zsh を叩いたときに次のエラーが出るときの対策

1
2
./test.zsh: 2 行: read: -q: 無効なオプションです
read: 使用法: read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name ...]

動かないシェルスクリプトのサンプル

  • 但しこれは動く
    • echo "yes or no (y/N): "; if read -q; then; echo hello; else echo abort; fi
1
2
3
4
5
6
echo 'yes or no (y/N): '
if read -q; then
  echo y
else
  echo n
fi

解決方法

  • 次のように shebang を入れてやる
    • 多分 sh が呼ばれているのだと思う
1
2
3
4
5
6
7
8
#!/bin/zsh

echo 'yes or no (y/N): '
if read -q; then
  echo y
else
  echo n
fi