Переменные среды в Unix
От: Аноним  
Дата: 27.09.12 13:31
Оценка:
Есть программа CallTEMP.jar, написанная на Java, и есть программа beg_matr, написанная на Fortran-е.

В среде Unix существует файл run.bat:

newterm()
cd /home/KOL/ryk/CallTEMP

java -jar CallTEMP.jar
beg_matr
java -jar CallTEMP.jar finish
echo конец загрузки


Есть ли в Unix переменные среды?
Могу ли я внутри программы CallTEMP (второй её вызов--команда java -jar CallTEMP.jar finish) в зависимости от условия задать значение переменной среды, а потом уже в зависимости от значения этой переменной среды вызвать ещё раз программу beg_matr ?
То есть чтобы было что-то вроде такого:

newterm()
cd /home/KOL/ryk/CallTEMP

java -jar CallTEMP.jar
beg_matr
java -jar CallTEMP.jar finish
if %myvar==1 beg_matr
echo конец загрузки


(Я не знаю операционную систему Unix--просто пришлось столкнуться с ней).
Re: Переменные среды в Unix
От: ДимДимыч Украина http://klug.org.ua
Дата: 27.09.12 13:43
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Есть ли в Unix переменные среды?


Есть.

А>Могу ли я внутри программы CallTEMP (второй её вызов--команда java -jar CallTEMP.jar finish) в зависимости от условия задать значение переменной среды, а потом уже в зависимости от значения этой переменной среды вызвать ещё раз программу beg_matr ?


Нет. Переменные среды принадлежат процессу, он может задавать переменные себе и потомкам, но на родительский процесс повлиять не может.

А>То есть чтобы было что-то вроде такого:


Процесс может вернуть значение через stdout/stderr, которое потом шелл присвоит переменной, или же через код возврата статус успешности выполнения.
http://files.rsdn.org/25994/sign.gif Обязательно бахнем! И не раз. Весь мир в труху! Но потом. (ДМБ)
Re[2]: Переменные среды в Unix
От: Аноним  
Дата: 27.09.12 13:47
Оценка:
Здравствуйте, ДимДимыч, Вы писали:

А>>То есть чтобы было что-то вроде такого:


ДД>Процесс может вернуть значение через stdout/stderr, которое потом шелл присвоит переменной, или же через код возврата статус успешности выполнения.


Не могли бы Вы написать пример, как в файле run.bat можно работать со значениями переменных шелл, и как можно обработать статус успешности выполнения по коду возврата?
Re[3]: Переменные среды в Unix
От: ДимДимыч Украина http://klug.org.ua
Дата: 27.09.12 14:01
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Не могли бы Вы написать пример, как в файле run.bat можно работать со значениями переменных шелл,


В bash, установить значение:
VAR=value

(пробелы около знака "равно" недопустимы)

Получить значение:
${VAR}


А>и как можно обработать статус успешности выполнения по коду возврата?


Переменная "$?" содержит код возврата последней выполненной команды.

Вообще прочите документацию по вашему шеллу (если это bash, то man bash), там достаточно подробно все описано.
http://files.rsdn.org/25994/sign.gif Обязательно бахнем! И не раз. Весь мир в труху! Но потом. (ДМБ)
Re[4]: Переменные среды в Unix
От: RussianFellow Россия http://russianfellow.livejournal.com
Дата: 28.09.12 06:09
Оценка:
Здравствуйте, ДимДимыч, Вы писали:

ДД>Здравствуйте, Аноним, Вы писали:


А>>Не могли бы Вы написать пример, как в файле run.bat можно работать со значениями переменных шелл,


ДД>В bash, установить значение:

ДД>
ДД>VAR=value
ДД>

ДД>(пробелы около знака "равно" недопустимы)

ДД>Получить значение:

ДД>
ДД>${VAR}
ДД>


А>>и как можно обработать статус успешности выполнения по коду возврата?


ДД>Переменная "$?" содержит код возврата последней выполненной команды.


ДД>Вообще прочите документацию по вашему шеллу (если это bash, то man bash), там достаточно подробно все описано.


Ясно. И ещё вопрос: можно ли в Unix написать блок действий (начало и конец), который зависит от этого значения

$?

?
Есть ли в Unix аналог команд begin -- end в Pascal/Delphi или команд { -- } в C/C++/Java/C# ?
Re[5]: Переменные среды в Unix
От: Kswapd Россия  
Дата: 28.09.12 06:33
Оценка:
Этак всё кончится пересказом руководства http://www.tldp.org/LDP/abs/html/abs-guide.html
Re[5]: Переменные среды в Unix
От: Anton Batenev Россия https://github.com/abbat
Дата: 28.09.12 08:02
Оценка:
Здравствуйте, RussianFellow, Вы писали:

RF> Ясно. И ещё вопрос: можно ли в Unix написать блок действий (начало и конец), который зависит от этого значения $? ?

RF> Есть ли в Unix аналог команд begin -- end в Pascal/Delphi или команд { -- } в C/C++/Java/C# ?

Да, есть

if [ $? -ne 0 ]
then
    # обработка ошибки
    exit $?
fi


Подробности man test.
avalon/1.0.432
Re[6]: Переменные среды в Unix
От: RussianFellow Россия http://russianfellow.livejournal.com
Дата: 28.09.12 08:35
Оценка:
Здравствуйте, Anton Batenev, Вы писали:

AB>Здравствуйте, RussianFellow, Вы писали:


RF>> Ясно. И ещё вопрос: можно ли в Unix написать блок действий (начало и конец), который зависит от этого значения $? ?

RF>> Есть ли в Unix аналог команд begin -- end в Pascal/Delphi или команд { -- } в C/C++/Java/C# ?

AB>Да, есть


AB>
AB>if [ $? -ne 0 ]
AB>then
AB>    # обработка ошибки
AB>    exit $?
AB>fi
AB>


AB>Подробности man test.


Это для bash. А как будет выглядеть это для Korn Shell?
Re[7]: Переменные среды в Unix
От: Anton Batenev Россия https://github.com/abbat
Дата: 28.09.12 08:48
Оценка:
Здравствуйте, RussianFellow, Вы писали:

RF> Это для bash. А как будет выглядеть это для Korn Shell?


Это не для bash, это для sh. Вроде как ksh должен быть обратно совместим с sh.
avalon/1.0.432
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.