LINUX.ORG.RU
ФорумAdmin

скрипт внутри скрипта


0

1

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

res=$(./script1 $param1 $param2); echo $res

или так

res=`./script1 $param1 $param2`

как правильно написать?

( script1 возвращает 0 или -1 )



Последнее исправление: zzkate (всего исправлений: 2)

Путь полный попробуй прописать. А так всё правильно вроде. Я через бэктики обычно делаю (`)

blind_oracle ★★★★★
()

script1 возвращает 0 или -1

Как возвращает? Если через stdout, ты всё правильно делаешь. Если кодом возврата, то

./script1 $param1 $param2 ; echo $?
geekless ★★
()

почему-то получаю строку

Что получаете?

script1 возвращает 0 или -1

Возвращает - это exit code (который «$?»), или просто пишет в stdout?

AITap ★★★★★
()

всё правильно сделал. показывай полное содержимое скриптов
Бэктики - трудночитаемое зло

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

чушь, вперед читать man sh до просветления, обе конструкции правильные. только они засовывают в res вывод скрипта, а не результат выхода. чтобы получить результат выхода надо сделать

./script1 $param1 $param2
res=$?
echo $res
, ещё неплохим тоном считается параметры брать в кавычки, иначе параметр с пробелом развернется в два параметра.

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

Да.

var=«$(command)» # работает с любым выхлопом команды

var=$(command) # работает только если выхлоп без пробелов

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

Да, согласен. $(uname -h) из инструкций по написанию и сборке ядерных модулей помню, попячился.

А разве часты случаи, когда не хватает просто && и || ?

pianolender ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.