Bearbeiten:
Scheint zu funktionieren bash
. Es scheint, dass das Problem damit zusammenhängt zsh
. Wenn es eine bessere Seite gibt, auf der Sie dieses Problem veröffentlichen können, lassen Sie es mich wissen.
Ich schreibe ein einfaches Skript, das eine Reihe von Verzeichnissen erstellt. Ich möchte, dass der Benutzer eine Bestätigung gibt, bevor ich dies tue. Ich verwende das Folgende als Basis, kann es jedoch nicht innerhalb einer Bash-Funktion ausführen. Wenn ich es außerhalb einer Funktion platziere, funktioniert es gut. Hier ist ein isoliertes Beispiel:
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 aus diesem SO Post.
Sourcing die Datei und / oder test
Ergebnisse in dem folgenden Fehler: read:1: -p: no coprocess
. Gleiche Ausgabe, wenn ich es in meine.bashrc
Bearbeiten :
@hennes
- Ich möchte, dass sich die Funktion in einer Konfigurationsdatei befindet, damit ich sie aus einem beliebigen Verzeichnis aufrufen kann (idealerweise aus meiner .bashrc- oder .zshrc-Datei).
- Ich habe die Formatierung der ersten kommentierten Zeile korrigiert. Problem besteht immer noch in
zsh
- Die Bash-Version ist 3.2, aber Sie haben mir geholfen herauszufinden, dass das Problem mit zsh und nicht mit bash zusammenhängt.
zsh
nicht gedacht, dass es einen Konflikt mit Bash-Skripten geben würde (ich habe mehrere ähnliche Skripten, die in Ordnung sind). Ich habe es erneut markiert und auf Ihre Fragen geantwortet. Danke, dass du mich in die richtige Richtung gelenkt hast!
./read.sh
. Es wird nicht benötigt, Sie führen es auf andere Weise aus oder wenn Sie es in ein Startskript einfügen. Und wenn Sie es in zsh mit `zsh ./read.sh 'ausführen möchten, werden die mit einem # beginnenden Zeilen ignoriert. Sie sind auch verwirrend, da sie den Eindruck erwecken, dass Sie bash verwenden, wenn Sie zsh verwenden.
#! /bin/bash
mit einem Leerzeichen hinter ihr? Ich dachte das wären nicht erlaubt? 3) '#! / Usr / bin / env bash' ist wahrscheinlich besser. 4) Welche Bash-Version? (Ich testete mit Bash 4.1.10 auf FreeBSD und bekam keine Fehler)