"nenhum coprocess" erro ao usar leitura [duplicado]

5

Eu tenho um script bash chamado reader . Ele lê a entrada do usuário:

#!/bin/bash
read -p "What is your name?" username
echo "Hello, ${username}"

Executando o script por source reader (EDIT: do shell zsh), recebo o erro reader:read:2: -p: no coprocess . Não dá esse erro quando eu o executo como ./reader .

Outras opções read não produzem esse erro. Por exemplo, eu poderia ter feito:

#/bin/bash
echo -n "What is your name?"
read username
echo "Hello, ${username}"

De onde vem o erro sem co-processamento? O que isso significa? E o que devo fazer sobre isso?

    
por Flux 21.02.2017 / 23:08

1 resposta

3

Quando você usa source , é o shell atual que lê o arquivo, não o shell mencionado na linha #! . E suponho que seu shell seja zsh ou ksh93 , que usa read -p para ler de um co-processo.

Um exemplo disso em ksh93 :

cat /etc/passwd |&

while IFS=":" read -p user rest; do
    printf 'There is a user called %s\n' "$user"
done

Para executar o seu script, mencione explicitamente o interpretador:

$ bash script.sh

... ou torne o script executável e execute-o:

$ chmod +x script.sh
$ ./script.sh

Para obter read para usar um prompt personalizado em zsh e ksh93 :

read username"?What's you name? " 
printf 'Hello %s!\n' "$username"
    
por 21.02.2017 / 23:34