URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 8824
[ Назад ]

Исходное сообщение
"Вопрос про результаты функций/операций"

Отправлено mkotov , 05-Авг-10 23:44 
Здравствуйте!
Вопрос начинающего, возможно глупый.
При написании скриптов на bash и perl возникла необходимость запускать из скриптов какие-то внешние скрипты или программы, а так же какие-то встроенные функции, так вот - как правильно передать результат их выполнения в основной скрипт?
Я смог придумать только дурацкую конструкцию, когда вызываемый скрипт выводит информацию в файл, а основной потом его открывает и оттуда получает данные))

Пример:
например perl
system(date);
Вот как мне это не на экран вывести, а в переменную записать?

или bash:
скрипт 1
/home/mike/bla_bla.sh &

скрипт 2
pid = $$

Как вернуть в родительский скрипт это значение?

Или хотя бы по каким ключевым словам искать на эту тему в гугле)))


Содержание

Сообщения в этом обсуждении
"Вопрос про результаты функций/операций"
Отправлено phpcoder , 06-Авг-10 08:19 
В шелле попробуй:

OUT="$(ls)"

или

OUT="`ls`"

В переменной OUT будет всё что ls выведет на stdout



"Вопрос про результаты функций/операций"
Отправлено cirus , 06-Авг-10 14:27 
$var = `date`;

"Вопрос про результаты функций/операций"
Отправлено аноним , 06-Авг-10 17:24 
sh:

value=`command`;

или сразу передавай поток дальше:

command | othercommand

perl:

open(COMMAND, 'command|');
while(my $line = <COMMAND>) {
  print $line;
}
close(COMMAND);

опять же

$var = `command`;

>скрипт 1
>/home/mike/bla_bla.sh &
>
>скрипт 2
>pid = $$

Конкретно для этого случая - pid потомка всегда известен родителю.

/home/mike/bla_blash &
pid=$!
echo "Forked $pid, now waiting it to finish"
wait $pid