LINUX.ORG.RU

Перадача параметров от Shell сценария с использованием stdout.

 ,


0

1

На CodeRoad есть статья, где рассказывается о том, как передавать параметры от запущенного субсценария основному сценарию:

https://coderoad.ru/35953072/Передача-параметров-из-одного-сценария-в-другой-Shell-сценариев

Как получить доступ к параметрам запущенного сценария через stdout? Кто-то может объяснить это простым языком?

По-моему там всё достаточно просто разжевано: либо небезопасный eval, либо переделать скрипт так, чтобы переменные использовали наследование от родительского процесса к дочернему.

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

Pinkbyte ★★★★★
()
Последнее исправление: Pinkbyte (всего исправлений: 1)
Ответ на: комментарий от Pinkbyte

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

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

Обратите внимание, что если выходные данные отправляются в файл—это включает stdout, на самом деле—основной скрипт может внимательно прочитать файл (а не использовать простой eval ).

О каком файле в этом случае идет речь? Какой файл может «внимательно» прочитать основной скрипт? Как создать в дочернем скрипте такой файл, к которому сможет обратиться родительский скрипт?

Cl_Magenta
() автор топика
Ответ на: комментарий от Cl_Magenta

Задача стоит обратная: передать данные от дочернего процесса родительскому.

Так это как раз обычная задача, практически всегда вся работа на компьютере так и производится: вы запускаете задачи и результаты используете для запуска других задач. Потому и решения стандартные: результаты работы надо приводить к детерминированному формату для распознавания другими программами, как то «табличные» формы для вычитки нужных полей; заполнение баз данных, включая данные на файловой системе, которая тоже — база данных; создание текстовых «баз» типа ini/json и прочих своих форматов и вообще всё остальное прочие, что и как делается на компе, вплоть до генерации исходников, их компиляции и запуска :)

vodz ★★★★★
()
Ответ на: комментарий от Cl_Magenta

О каком файле в этом случае идет речь?

О том, что ты создашь.

Как создать в дочернем скрипте такой файл, к которому сможет обратиться родительский скрипт?

echo "То что нужно передать" > /tmp/file.tmp

И в основном скрипте

var1=`cat /tmp/file.tmp`
echo $var1
anonymous
()
Ответ на: комментарий от anonymous

echo "То что нужно передать" > /tmp/file.tmp

Спасибо. Есть все-таки temp file для таких случаев…

Cl_Magenta
() автор топика
Ответ на: комментарий от Cl_Magenta

Какой файл может «внимательно» прочитать основной скрипт?

https://www.linuxjournal.com/content/using-named-pipes-fifos-bash

технически named pipe - это тоже файл :-)
просто способ доступа к нему несколько другой

Pinkbyte ★★★★★
()
Последнее исправление: Pinkbyte (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.