Вызовите и передайте аргументы другому скрипту и сохраните эхо - PullRequest
1 голос
/ 09 октября 2019

Я вызываю другой скрипт и передаю необходимые аргументы, например:

main.sh

bash menu.sh "${#map_list[@]}" "${map_list[@]}""${#index_list[@]}" "${index_list[@]}" $title

menu.sh

options=( "${@:2:$1}" ); shift "$(( $1 + 1 ))"
results=( "${@:2:$1}" ); shift "$(( $1 + 1 ))"

declare -p options results

title=$1
### more code beneath to pop a multi option menu ... ###

, и это правильно отображает меню:

working menu

однако мне нужно сохранитьпараметры, которые были выбраны и повторяют строку

menu.sh

echo $chosen

и попытка понравилась следующим образом:

main.sh

chosen=$(bash menu.sh "${#map_list[@]}" "${map_list[@]}" "${#index_list[@]}" "${index_list[@]}" $title)

, но в меню не отображаются какие-либо параметры, просто отображается строка инструкции, которая показывает, что аргументы как-то неправильно переданы

not working menu

1 Ответ

0 голосов
/ 09 октября 2019

menu.sh выводит приглашение «Проверить опцию» в stderr, но опции печатаются в стандартный вывод. $(...) захватывает стандартный вывод, поэтому параметры не отображаются.

Отредактируйте menu.sh и напечатайте параметры stderr с помощью >&2.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...