скрипт вызывающий другой скрипт (через параметры)

На самом деле это единственный раздел про unix на этом форуме

Модераторы: /dev/random, Модераторы разделов

jedai108
Сообщения: 93
ОС: *.deb

скрипт вызывающий другой скрипт

Сообщение jedai108 »

есть скрипт run.sh:

Код: Выделить всё

#!/bin/sh
myvar='asadsdsdsdsd'
my_inc=$@;
include '$my_inc';
. $my_inc


вызывая его c параметром my.sh:
$./run.sh my.sh
я хочу чтобы скрипт run.sh запускал файл, название которого передается как параметр, а второй скрипт использовал переменные которые задавались в первом скрипте
(последние две строки моего скрипта не делают этого)
вопросы :
1)почему это не проиходит?
2)можно ли как то запустить в консоли два скрипта в одной строке, так чтобы когда запустися второй скрипт, переменные с первого скрипта не уничтожились в памяти
пробовал :
$./script1.sh && ./script2.sh
$./script1.sh; ./script2.sh
не пашет, когда запускаетя второй скрипт, то уже первого скрипта переменные он не знает
Спасибо сказали:
Аватара пользователя
aLexx programmer
Сообщения: 985
Статус: Турук-Макто
ОС: Gentoo -> Ubuntu

Re: скрипт вызывающий другой скрипт

Сообщение aLexx programmer »

Код: Выделить всё

#!/bin/bash
./$@


или

Код: Выделить всё

#!/bin/bash
bash $@
Спасибо сказали:
jedai108
Сообщения: 93
ОС: *.deb

Re: скрипт вызывающий другой скрипт

Сообщение jedai108 »

работает, но мне надо чтобы переменные которые задаются в первом скрипте, можно было использовать во втором
Спасибо сказали:
Аватара пользователя
aLexx programmer
Сообщения: 985
Статус: Турук-Макто
ОС: Gentoo -> Ubuntu

Re: скрипт вызывающий другой скрипт

Сообщение aLexx programmer »

Перед запуском второго скрипта из первого для тех переменных, которые нужны, делайте export

Код: Выделить всё

#!/bin/bash
....
VAR1=qqqqqqq
VAR2=qqqqqqq
....
export VAR1
export VAR2
bash $@


или сразу

Код: Выделить всё

#!/bin/bash
....
export VAR1=qqqqqqq
export VAR2=qqqqqqq
....
bash $@
Спасибо сказали:
jedai108
Сообщения: 93
ОС: *.deb

Re: скрипт вызывающий другой скрипт

Сообщение jedai108 »

еше подсказали способ
run.sh

Код: Выделить всё

#!/bin/bash
var=1
. $1


my.sh

Код: Выделить всё

#!/bin/bash
echo $var


$./run.sh my.sh
1
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: скрипт вызывающий другой скрипт

Сообщение t.t »

Эти способы весьма различны. В первом случае второй скрипт запускается в дочерней оболочке, и значения переменных передаются в неё командой export; после завершения работы дочернего скрипта происходит возврат в первоначальный скрипт. Во втором же случае второй скрипт выполняется тем же экземпляром оболочки, что и первый.

Простейший случай существенной разницы между этими вариантами -- использование команды exit во втором скрипте. В первом случае после неё произойдёт возврат в первый скрипт, во втором -- выход из первого скрипта.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: скрипт вызывающий другой скрипт

Сообщение drBatty »

jedai108 писал(а):
24.01.2010 17:47
еше подсказали способ

команда . (aka source) включает файл внутрь скрипта так, как будто вы его туда скопипастили, потому никаких экспортов тут не нужно.

t.t ага. абсолютно согласен, уточнил немного...
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали: