Editar:
Parece trabajar dentro bash
. Parece que el problema está relacionado con zsh
. Si hay un sitio mejor para publicar este problema, avíseme.
Estoy escribiendo un script simple que crea una serie de directorios. Quiero que el usuario dé una confirmación antes de hacerlo. Estoy usando lo siguiente como base, pero parece que no puedo ejecutarlo dentro de una función bash. Si lo pongo fuera de una función, funciona bien. Aquí hay un ejemplo aislado:
leer.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 de esta publicación SO.
Abastecimiento del archivo y / o test
resultados en el siguiente error: read:1: -p: no coprocess
. Misma salida cuando lo coloco en mi.bashrc
Editar :
@hennes
- Quiero que la función esté en un archivo de configuración, para poder llamarla desde cualquier directorio (idealmente mi .bashrc o .zshrc)
- He corregido el formato de la primera línea comentada. El problema aún existe en
zsh
- La versión Bash es 3.2, pero me has ayudado a descubrir que el problema es con zsh y no bash.
zsh
pero no pensé que habría conflicto con los scripts de bash (tengo varios otros scripts similares ejecutándose correctamente). Lo volví a etiquetar y respondí a tus preguntas. ¡Gracias por señalarme en la dirección correcta!
./read.sh
. No es necesario si lo ejecuta de otra manera o si lo coloca en un script de inicio. Y si desea ejecutarlo en zsh con `zsh ./read.sh ', las líneas que comienzan con un # se ignoran. También confunden ya que dan la impresión de que usas bash cuando usas zsh).
#! /bin/bash
con un espacio detrás de ella shebang? Pensé que no estaban permitidos? 3) '#! / Usr / bin / env bash' es probablemente mejor. 4) ¿Qué versión de bash? (Probé con bash 4.1.10 en FreeBSD y no obtuve errores)