我有一个名为 的 bash 脚本reader
。它读取用户输入:
#!/bin/bash
read -p "What is your name?" username
echo "Hello, ${username}"
通过(编辑:从 zsh shell)运行脚本source reader
,我收到错误reader:read:2: -p: no coprocess
。当我运行它时,它不会给出此错误./reader
。
其他read
选项不会产生此错误。例如,我可以这样做:
#/bin/bash
echo -n "What is your name?"
read username
echo "Hello, ${username}"
no coprocess 错误从何而来?这是什么意思?我该怎么办?
答案1
当您使用 时source
,是当前 shell 读取该文件,而不是该#!
行提到的 shell。我假设您的 shell 是zsh
orksh93
它用于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"