read command em zsh gera erro

3

No zsh, executar o comando read -p 'erasing all directories (y/n) ?' ans , gera o erro

read: -p: no coprocess

Mas no bash, imprime um prompt. Como faço isso em zsh?

    
por Madhavan Kumar 24.04.2015 / 14:54

3 respostas

5

Você ainda pode usar read , basta imprimir um aviso primeiro. Em zsh , -p indica que a entrada deve ser lida de um coprocess em vez de indicar o prompt a ser usado.

Você pode fazer o seguinte, que é compatível com POSIX:

printf '%s ' 'erase all directories? (y/n)'
read ans
    
por 24.04.2015 / 14:57
2

ou mais zsh -like

() {
  local compcontext='yn:yes or no:(y n)'
  vared -cp 'erasing all directories (y/n) ? ' ans
}

Que permite concluir a resposta.

    
por 25.04.2015 / 04:43
1

O mesmo que em ksh :

read 'ans?erasing all directories (y/n) ?'

Observe também que zsh read tem -q para respostas sim / não:

if read -q '?erasing all directories (y/n) ?'; then
  rm -rf -- *(D/)
fi

Retorna true se você digitar sim e não requer que você pressione Enter .

    
por 25.04.2015 / 01:43

Tags