Как передать аргумент в функцию и получить возвращаемое значение в Bash?

Мой код очень простой.

variable=$( createTable $table_name )

или

returnedVariable=$( function $argument )

Мой код ломается на этой строке. Я не смог найти нигде в Интернете, как оба передать аргумент и получить возвращаемое значение в Bash.

ОБНОВЛЕНИЕ: теперь я понял. У меня не может быть нескольких эхо в моей функции. Кроме того, echo никогда не следует рассматривать как возврат, а как оператор печати или стандартный вывод, который вы можете захватить. Спасибо за ваш отзыв!

Что не работает? Как выглядит createTable? У вас есть функция с именем function? function - зарезервированное слово в Bash.

Benjamin W. 13.11.2018 20:30

Первый выглядит нормально, если нет встроенных пробелов или специальных символов. Попробуйте цитаты вокруг подоболочки - variable = "$( createTable $table_name )"

Paul Hodges 13.11.2018 20:33

@PaulHodges var=$(cmd) - это то же самое, что и var = "$(cmd)", но следует указывать $table_name.

Benjamin W. 13.11.2018 20:43
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
3
3 028
2

Ответы 2

это то, что вы пытаетесь сделать?

$ function createTable() { echo "this is the table: $1"; }    
$ var=$(createTable "$table_name")
$ echo "$var"
this is the table: New Table

обратите внимание, что функция не возвращает ничего, зарезервированного для статуса успеха / ошибки. Здесь по умолчанию будет ноль. Концептуальное «возвращаемое значение функции» осуществляется через стандартный вывод. Это не «функции» в математическом смысле.

Да! Вот и все! Я думаю, может быть так, что в функции не может быть нескольких "эхо". Последнее эхо обрабатывается как возврат или первое эхо, с которым сталкивается функция?

Snoopy 13.11.2018 20:53

Статус выхода функции - это статус выхода последней команды, выполненной функцией.

chepner 13.11.2018 20:54

@Snoopy Похоже, вы говорите о вывод, а не о возвращаемом значении. Вывод все команд echo производит вывод функции.

chepner 13.11.2018 21:20

В этом есть смысл! Чтобы уточнить, вы говорите, что все команды эха в функции возвращаются?

Snoopy 13.11.2018 21:31

Не используйте эту терминологию. Ничего не возвращается (кроме статуса). echo отправляется на стандартный вывод, который вы можете захватить.

karakfa 13.11.2018 21:34

В этом случае статус выхода присвоения - это статус выхода подстановки команды.

$ var=$(echo "hi"; exit 3)
$ rv=$?
$ echo "$var"
hi
$ echo "$rv"
3

Другие вопросы по теме