Editar:
Parece trabalhar dentro bash
. Parece que o problema está relacionado zsh
. Se houver um site melhor para publicar esse problema, entre em contato.
Estou escrevendo um script simples que cria uma série de diretórios. Quero que o usuário confirme antes de fazê-lo. Estou usando o seguinte como base, mas não consigo executá-lo em uma função bash. Se eu colocá-lo fora de uma função, ele funciona bem. Aqui está um exemplo isolado:
read.sh
#!/bin/bash
test() {
read -p "Here be dragons. Continue?" -n 1 -r
if [[ $REPLY =~ ^[Yy]$ ]]
then
echo "You asked for it..."
fi
}
código desta postagem SO.
Abastecimento de arquivo e / ou test
resultados no seguinte erro: read:1: -p: no coprocess
. A mesma saída quando a coloco no meu.bashrc
Editar ::
@hennes
- Eu quero que a função esteja em um arquivo de configuração, para que eu possa chamá-la de qualquer diretório (idealmente meu .bashrc ou .zshrc)
- Corrigi a formatação da primeira linha comentada. O problema ainda existe em
zsh
- A versão do Bash é 3.2, mas você me ajudou a descobrir que o problema está no zsh e não no bash.
zsh
mas não achei que houvesse conflito com os scripts do bash (eu tenho vários outros scripts semelhantes sendo executados corretamente). Marcamos novamente e respondi às suas perguntas. Obrigado por me apontar na direção certa!
./read.sh
. Não é necessário executá-lo de qualquer outra maneira ou se você o colocar em um script de inicialização. E se você deseja executá-lo no zsh com `zsh ./read.sh ', as linhas que começam com # são ignoradas. Eles também confundem, pois dão a impressão de que você usa o bash quando usa o zsh).
#! /bin/bash
com um espaço atrás dela shebang? Eu pensei que aqueles não eram permitidos? 3) '#! / Usr / bin / env bash' é provavelmente melhor. 4) Qual versão do bash? (Eu testei com o bash 4.1.10 no FreeBSD e não tem erros)