Modificare:
Sembra funzionare all'interno bash
. Sembra che il problema sia legato zsh
. Se esiste un sito migliore per pubblicare questo problema, fammi sapere.
Sto scrivendo una semplice sceneggiatura che crea una serie di directory. Voglio che l'utente dia una conferma prima di farlo. Sto usando quanto segue come base, ma non riesco a farlo funzionare all'interno di una funzione bash. Se lo metto al di fuori di una funzione, funziona bene. Ecco un esempio isolato:
read.sh
#!/bin/bash
test() {
read -p "Here be dragons. Continue?" -n 1 -r
if [[ $REPLY =~ ^[Yy]$ ]]
then
echo "You asked for it..."
fi
}
codice da questo post SO.
Sourcing il file e / o test
risultati il seguente errore: read:1: -p: no coprocess
. Stesso output quando lo inserisco nel mio.bashrc
Modifica ::
@hennes
- Voglio che la funzione sia in un file di configurazione, quindi posso chiamarla da qualunque directory (idealmente il mio .bashrc o .zshrc)
- Ho corretto la formattazione della prima riga commentata. Il problema esiste ancora in
zsh
- La versione di Bash è 3.2, ma mi hai aiutato a capire che il problema è con zsh e non bash.
zsh
ma non pensavo che ci sarebbe stato conflitto con gli script bash (ho molti altri script simili che funzionano bene). L'ho ricodificato e ho risposto alle tue domande. Grazie per avermi indicato nella giusta direzione!
./read.sh
. Non è necessario lo si esegue in qualsiasi altro modo o se lo si inserisce in uno script di avvio. E se vuoi eseguirlo in zsh con `zsh ./read.sh ', le righe che iniziano con un # vengono ignorate. Si confondono anche perché danno l'impressione che usi bash quando usi zsh).
#! /bin/bash
con uno spazio dietro lei shebang? Pensavo che quelli non fossero ammessi? 3) '#! / Usr / bin / env bash' è probabilmente migliore. 4) Quale versione bash? (Ho provato con bash 4.1.10 su FreeBSD e non ho riscontrato errori)