Мой код очень простой.
variable=$( createTable $table_name )
или
returnedVariable=$( function $argument )
Мой код ломается на этой строке. Я не смог найти нигде в Интернете, как оба передать аргумент и получить возвращаемое значение в Bash.
ОБНОВЛЕНИЕ: теперь я понял. У меня не может быть нескольких эхо в моей функции. Кроме того, echo никогда не следует рассматривать как возврат, а как оператор печати или стандартный вывод, который вы можете захватить. Спасибо за ваш отзыв!
Первый выглядит нормально, если нет встроенных пробелов или специальных символов. Попробуйте цитаты вокруг подоболочки - variable = "$( createTable $table_name )"
@PaulHodges var=$(cmd) - это то же самое, что и var = "$(cmd)", но следует указывать $table_name.





это то, что вы пытаетесь сделать?
$ function createTable() { echo "this is the table: $1"; }
$ var=$(createTable "$table_name")
$ echo "$var"
this is the table: New Table
обратите внимание, что функция не возвращает ничего, зарезервированного для статуса успеха / ошибки. Здесь по умолчанию будет ноль. Концептуальное «возвращаемое значение функции» осуществляется через стандартный вывод. Это не «функции» в математическом смысле.
Да! Вот и все! Я думаю, может быть так, что в функции не может быть нескольких "эхо". Последнее эхо обрабатывается как возврат или первое эхо, с которым сталкивается функция?
Статус выхода функции - это статус выхода последней команды, выполненной функцией.
@Snoopy Похоже, вы говорите о вывод, а не о возвращаемом значении. Вывод все команд echo производит вывод функции.
В этом есть смысл! Чтобы уточнить, вы говорите, что все команды эха в функции возвращаются?
Не используйте эту терминологию. Ничего не возвращается (кроме статуса). echo отправляется на стандартный вывод, который вы можете захватить.
В этом случае статус выхода присвоения - это статус выхода подстановки команды.
$ var=$(echo "hi"; exit 3)
$ rv=$?
$ echo "$var"
hi
$ echo "$rv"
3
Что не работает? Как выглядит
createTable? У вас есть функция с именемfunction?function- зарезервированное слово в Bash.