Düzenle:
İçinde çalışmak gibi görünüyor bash
. Sorun ilgili olduğu anlaşılıyor zsh
. Bu sorunu yayınlamak için daha iyi bir site varsa bana bildirin.
Bir dizi dizin oluşturan basit bir komut dosyası yazıyorum. Kullanmadan önce kullanıcının onay vermesini istiyorum. Aşağıdakileri temel olarak kullanıyorum, ancak bir bash işlevi içinde çalışmasını sağlayamıyorum. Bir fonksiyonun dışına koyarsam iyi çalışır. İzole bir örnek:
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 bu SO yazı.
Dosya ve / veya kaynak test
aşağıdaki hatayla sonuçları: read:1: -p: no coprocess
. Aynı çıkışa yerleştirdiğimde aynı çıktı.bashrc
Düzenleme ::
@hennes
- İşlev bir yapılandırma dosyasında olmasını istiyorum, bu yüzden herhangi bir dizinden (ideal olarak benim .bashrc veya .zshrc) çağırabilirsiniz
- İlk yorum satırının biçimlendirmesini düzelttim. Sorun hala var
zsh
- Bash sürümü 3.2, ancak sorunun bash değil zsh ile ilgili olduğunu anlamama yardımcı oldunuz.
zsh
ancak bash komut dosyalarıyla (i doğru çalışan birkaç benzer komut dosyası var) çakışma olacağını düşünmüyordum. Yeniden etiketledim ve sorularınıza yanıt verdim. Beni doğru yöne yönlendirdiğiniz için teşekkürler!
./read.sh
. Başka bir şekilde çalıştırmanız veya bir başlangıç komut dosyasına yerleştirmeniz gerekmez. Ve eğer zsh içinde zsh ./read.sh ile çalıştırmak istiyorsanız # ile başlayan satırlar yok sayılır. Ayrıca zsh kullandığınızda bash kullandığınız izlenimini verdiğinden beri kafa karıştırırlar).
#! /bin/bash
o shebang arkasında bir boşluk ile? Bunlara izin verilmediğini mi sanıyordum? 3) '#! / Usr / bin / env bash' muhtemelen daha iyidir. 4) Hangi bash sürümü? (FreeBSD'de 4.1.10 bash ile test ettim ve hata aldım)