Éditer:
Semble fonctionner à l'intérieur bash
. Il semble que le problème soit lié à zsh
. S'il existe un meilleur site pour publier ce problème, faites le moi savoir.
J'écris un script simple qui crée une série de répertoires. Je veux que l'utilisateur donne une confirmation avant de le faire. J'utilise ce qui suit comme base, mais je n'arrive pas à le faire fonctionner dans une fonction bash. Si je le mets en dehors d'une fonction, cela fonctionne bien. Voici un exemple isolé:
read.sh
#!/bin/bash
test() {
read -p "Here be dragons. Continue?" -n 1 -r
if [[ $REPLY =~ ^[Yy]$ ]]
then
echo "You asked for it..."
fi
}
code de cette publication SO.
Sourcing le fichier et / ou les test
résultats de l'erreur suivante: read:1: -p: no coprocess
. Même sortie lorsque je la place dans mon.bashrc
Modifier ::
@hennes
- Je veux que la fonction soit dans un fichier de configuration, donc je peux l'appeler à partir de n'importe quel répertoire (idéalement mon .bashrc ou .zshrc)
- J'ai corrigé le formatage de la première ligne commentée. Le problème existe toujours dans
zsh
- La version Bash est 3.2, mais vous m'avez aidé à comprendre que le problème est avec zsh et non bash.
zsh
mais je ne pensais pas qu'il y aurait un conflit avec les scripts bash (j'ai plusieurs autres scripts similaires en cours d'exécution). Je l'ai repensé et j'ai répondu à vos questions. Merci de m'avoir pointé dans la bonne direction!
./read.sh
. Ce n'est pas nécessaire si vous l'exécutez d'une autre manière ou si vous le mettez dans un script de démarrage. Et si vous voulez l'exécuter en zsh avec `zsh ./read.sh ', alors les lignes commençant par un # seront ignorées. Ils confondent également car ils donnent l'impression que vous utilisez bash lorsque vous utilisez zsh).
#! /bin/bash
avec un espace derrière elle shebang? Je pensais que ce n'était pas autorisé? 3) '#! / Usr / bin / env bash' est probablement mieux. 4) Quelle version bash? (J'ai testé avec bash 4.1.10 sur FreeBSD et je n'ai eu aucune erreur)