Редагувати:
Здається, працює всередині 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
}
код з цієї публікації SO
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
з пробілом позаду shebang? Я думав, що їх не дозволяють? 3) "#! / Usr / bin / env bash", мабуть, краще. 4) Яка версія bash? (Я тестував bash 4.1.10 на FreeBSD і не мав помилок)