読み取り[冗長]使用時の「コプロセスなし」エラー

読み取り[冗長]使用時の「コプロセスなし」エラー

という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仮定します。ksh93read -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とでカスタムプロンプトを使用するには:zshksh93

read username"?What's you name? " 
printf 'Hello %s!\n' "$username"

関連情報