Edytować:
Wydaje się działać wewnątrz bash
. Wygląda na to, że problem jest związany z zsh
. Jeśli jest lepsza strona do opublikowania tego problemu, daj mi znać.
Piszę prosty skrypt, który tworzy serię katalogów. Chcę, aby użytkownik dał potwierdzenie, zanim to zrobię. Używam następujących zasad jako podstawy, ale nie wydaje mi się, aby działał w funkcji bash. Jeśli umieściłem go poza funkcją, działa dobrze. Oto przykład:
read.sh
#!/bin/bash
test() {
read -p "Here be dragons. Continue?" -n 1 -r
if [[ $REPLY =~ ^[Yy]$ ]]
then
echo "You asked for it..."
fi
}
kod z to SO post.
Pozyskiwanie pliku i / lub test
powoduje następujący błąd: read:1: -p: no coprocess
. To samo wyjście, gdy umieściłem go w moim .bashrc
Edytować: :
@hennes
- Chcę, aby funkcja znajdowała się w pliku konfiguracyjnym, więc mogę go wywołać z dowolnego katalogu (najlepiej mojego .bashrc lub .zshrc)
- Poprawiłem formatowanie pierwszej skomentowanej linii. Problem nadal istnieje
zsh
- Wersja Bash to 3.2, ale pomogłeś mi się zorientować, że problem dotyczy zsh, a nie basha.
zsh
ale nie myślałem, że będzie konflikt ze skryptami bash (mam kilka innych podobnych skryptów działających poprawnie). Odznaczyłem go i odpowiedziałem na twoje pytania. Dzięki za wskazanie mi właściwego kierunku!
./read.sh
. Nie jest potrzebny, jeśli uruchomisz go w inny sposób lub umieścisz w skrypcie startowym. A jeśli chcesz go uruchomić w zsh za pomocą `zsh ./read.sh ', linie zaczynające się od # zostaną zignorowane. Mylą się także, ponieważ sprawiają wrażenie, że używasz basha, gdy używasz zsh).
#! /bin/bash
z przestrzenią za nią shebang? Myślałem, że to nie jest dozwolone? 3) '#! / Usr / bin / env bash' jest prawdopodobnie lepszy. 4) Która wersja basha? (Testowałem z bash 4.1.10 na FreeBSD i nie miałem żadnych błędów)