お知らせ

現在サイトのリニューアル作業中のため、全体的にページの表示が乱れています。
投稿日:
ソフトウェア::zsh

確認環境

Env Ver
zsh zsh 5.8 (x86_64-pc-msys)

サンプルコード

例として.zshrcに書くものとする(別に分割しても構わない)

  1. setopt PROMPT_SUBSTする
    1. この設定によりパラメータ展開、コマンド置換、および算術展開がプロンプトで実行される
  2. 展開したい関数をシングルクォートで囲み文字列結合する
    1. 注意点
      1. 変数に代入している場合評価されない
      2. 関数はシングルクォートで囲まないと評価されない
# baz は echo が入った関数
PROMPT "foobar"'$(baz)'
# 以下の 2 つは期待通り動作しない
PROMPT "foobar"$(baz)
PROMPT $(baz)
投稿日:
ソフトウェア::MSYS2ソフトウェア::zsh

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

./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
echo 'yes or no (y/N): '
if read -q; then
  echo y
else
  echo n
fi

解決方法

  • 次のようにshebangを入れてやる
    • 多分shが呼ばれているのだと思う
#!/bin/zsh

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