Я работаю с растущим скриптом bash, и внутри этого скрипта у меня есть ряд функций. Одна из этих функций должна возвращать значение переменных, но я сталкиваюсь с некоторыми проблемами с синтаксисом. Ниже приведен пример кода.возвращающие значения в функции bash
ShowTags() {
local tag=0
read tag
echo "$tag"
}
selected_tag=$(ShowTags)
echo "$selected_tag"
вытащил этот код из статьи Linux Journal, но проблема в том, что, кажется, не работает, или, возможно, он делает, и им не хватает что-то. По сути, всякий раз, когда функция вызывается, скрипт зависает и ничего не выводит, мне нужно CTRL + C вернуться к CLI.
Данная статья приведена ниже.
http://www.linuxjournal.com/content/return-values-bash-functions
Так что мой вопрос заключается в правильном способе вернуть значение? Есть ли лучший или более надежный способ сделать это? И если есть, пожалуйста, дайте мне пример, чтобы я мог понять это, не используя глобальные переменные.
EDIT:
Поведение это действительно становится для меня сейчас. Я использую следующий скрипт.
ShowTags() {
echo "hi"
local tag=0
read tag
echo "$tag"
}
selected_tag=$(ShowTags)
echo "$selected_tag
В основном то, что происходит, баш будет действовать, как если команда чтения происходит перед эхо-тега в верхней части функции. Как только я передаю что-то, чтобы прочитать, хотя он будет запускать верхнее эхо и завершить оставшуюся часть скрипта. Я не знаю, почему это происходит. Это именно то, что происходит в моем основном скрипте.
Почему вы отредактировали код в этом вопросе? Теперь это точно так же, как в ответе, поэтому ответ не имеет смысла. Это была ошибка копирования при написании вопроса? – Barmar
Я отредактировал код, чтобы он отражал его, что он появляется в моем скрипте. Проблема не в синтаксисе. Сценарий просто зависает, когда я пытаюсь вызвать функцию посредством подстановки команд. – barefly
Команда 'read tag' ждет ввода типа. – Barmar