というbashスクリプトがありますreader
。ユーザー入力を読みます。
#!/bin/bash
read -p "What is your name?" username
echo "Hello, ${username}"
スクリプトを実行すると(編集:zshシェルで)source reader
エラーが発生しますreader:read:2: -p: no coprocess
。実行すると、このエラーは発生しません./reader
。
他のread
オプションではこのエラーは発生しません。たとえば、次のようにできます。
#/bin/bash
echo -n "What is your name?"
read username
echo "Hello, ${username}"
共同プロセスなしエラーはどこで発生しますか?どういう意味ですか?私は何をすべきですか?
答え1
を使用するときにファイルを読み取るのは、行に記載されているシェルではsource
なく、現在のシェルです。#!
私はあなたのシェルがコプロセスからデータを読み取るために使用されるとzsh
仮定します。ksh93
read -p
一例ksh93
:
cat /etc/passwd |&
while IFS=":" read -p user rest; do
printf 'There is a user called %s\n' "$user"
done
走るあなたのスクリプトを使用するか、インタプリタに明示的に言及します。
$ bash script.sh
...またはスクリプトを実行可能にして実行します。
$ chmod +x script.sh
$ ./script.sh
read
とでカスタムプロンプトを使用するには:zsh
ksh93
read username"?What's you name? "
printf 'Hello %s!\n' "$username"