編集:
内で動作するようbash
です。問題はに関連しているようzsh
です。この問題を投稿するためのより良いサイトがあれば教えてください。
一連のディレクトリを作成する簡単なスクリプトを書いています。ユーザーに確認する前に確認してもらいたい。私は以下を基礎として使用していますが、bash関数内で実行させることはできません。関数の外側に配置すると、正常に機能します。孤立した例を次に示します。
read.sh
#!/bin/bash
test() {
read -p "Here be dragons. Continue?" -n 1 -r
if [[ $REPLY =~ ^[Yy]$ ]]
then
echo "You asked for it..."
fi
}
この SO投稿のコード。
ファイルを入手するとtest
、次のエラーが発生します:read:1: -p: no coprocess
。に配置したときと同じ出力.bashrc
編集::
@hennes
- 関数を構成ファイルに含めるため、任意のディレクトリ(理想的には.bashrcまたは.zshrc)から呼び出すことができます
- 最初のコメント行の書式を修正しました。問題はまだ存在します
zsh
- Bashバージョンは3.2ですが、問題はbashではなくzshにあることがわかりました。
zsh
していますが、bashスクリプトと競合するとは思いませんでした(他のいくつかの同様のスクリプトが正常に実行されています)。私はそれをタグ付けし直して、あなたの質問に答えました。私を正しい方向に向けてくれてありがとう!
./read.sh
。他の方法で実行したり、起動スクリプトに入れたりする必要はありません。また、zshで `zsh ./read.sh 'を使用して実行する場合、#で始まる行は無視されます。また、zshを使用するときにbashを使用するという印象を与えるため、混乱します。
#! /bin/bash
彼女の後ろにスペースがありますか?それらは許可されていないと思いましたか?3)「#!/ usr / bin / env bash」の方がおそらく良いでしょう。4)どのbashバージョンですか?(私はFreeBSD上ではbash 4.1.10でテストし、エラーを持っていない)