Редактировать:
Кажется, работает внутри bash
. Похоже, проблема связана с zsh
. Если есть лучший сайт для публикации этой проблемы, дайте мне знать.
Я пишу простой скрипт, который создает серию каталогов. Я хочу, чтобы пользователь дал подтверждение, прежде чем я это сделаю. Я использую следующее в качестве основы, но не могу заставить его работать внутри функции bash. Если я помещу это вне функции, это работает отлично. Вот отдельный пример:
read.sh
#!/bin/bash
test() {
read -p "Here be dragons. Continue?" -n 1 -r
if [[ $REPLY =~ ^[Yy]$ ]]
then
echo "You asked for it..."
fi
}
код из этого поста.
Sourcing файла и / или test
результатов в следующей ошибке: read:1: -p: no coprocess
. Тот же вывод, когда я помещаю его в мой.bashrc
Редактировать ::
@hennes
- Я хочу, чтобы функция была в конфигурационном файле, поэтому я могу вызывать ее из любого каталога (в идеале мой .bashrc или .zshrc)
- Я исправил форматирование первой закомментированной строки. Проблема все еще существует в
zsh
- Версия Bash 3.2, но вы помогли мне понять, что проблема в zsh, а не в bash.
zsh
но не думал, что возникнет конфликт со скриптами bash (у меня есть несколько других похожих скриптов, работающих нормально). Я пометил его и ответил на ваши вопросы. Спасибо, что указал мне правильное направление!
./read.sh
. В этом нет необходимости, вы запускаете его любым другим способом или помещаете в сценарий запуска. И если вы хотите запустить его в zsh с помощью `zsh ./read.sh ', тогда строки, начинающиеся с #, игнорируются. Они также сбивают с толку, так как создают впечатление, что вы используете bash, когда используете zsh).
#! /bin/bash
с пробелом сзади она шебанг? Я думал, что это не разрешено? 3) «#! / Usr / bin / env bash», вероятно, лучше. 4) Какая версия Bash? (Я тестировал bash 4.1.10 на FreeBSD и не получил ошибок)