23

~/.zprofilezsh を使用して、インタラクティブに yes/no スタイルの質問をするステップを入れようとしています。最初に、この bash スタイルのアプローチを試しましたが、次の形式のエラーが表示されました。

read: -p: no coprocess

(通常、zsh 構文は bash の構文とは異なることを認識しています。その前に sh エミュレーション コマンドを追加してみましたemulate -LR shが、違いはありませんでした)。

このページは、構文が異なる可能性があることを暗示していたため、このページと zsh のマニュアル ページに基づいて、代わりにこれを試しました。

read -q REPLY?"This is the question I want to ask?"

これは代わりに、次の形式のエラーで失敗します。

/home/user/.zprofile:5: no matches found: REPLY?"This is the question I want to ask?"

zsh で簡単な yes/no の質問をするにはどうすればよいですか? 理想的には、コマンドは 1 文字だけを飲み込み、Enter/Return を押す必要がなく、'安全' です。つまり、'Y' または 'y' が入力されない限り、後続のテストはデフォルトで no/false になります。

4

4 に答える 4

33

zshから- 読み取り

最初の引数に「?」が含まれている場合、シェルが対話型の場合、この単語の残りの部分が標準エラーのプロンプトとして使用されます。

引数全体を引用する必要があります

read -q "REPLY?This is the question I want to ask?"

これにより、 でプロンプトがThis is the question I want to ask?表示され、 で押された文字が返されREPLYます。

疑問符を引用しない場合zsh、引数をファイル名として一致させようとします。一致するファイル名が見つからない場合は、no matches found.

于 2013-03-02T12:46:36.320 に答える
9

ZSH の読み取りに関するドキュメントについては、ZSH マニュアルを参照してください。試す:

read REPLY\?"This is the question I want to ask?"
于 2013-03-02T13:48:34.550 に答える