Форум программистов, компьютерный форум, киберфорум
C/С++ под Linux
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.67/18: Рейтинг темы: голосов - 18, средняя оценка - 4.67
1 / 1 / 0
Регистрация: 12.01.2013
Сообщений: 39

Получение глобальной переменной из скрипта?

25.07.2013, 14:25. Показов 3603. Ответов 24
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет!

Есть скрипт
Bash
1
2
3
4
#!/bin/sh
 
XXX=`date`;
export XXX;
Есть Сшный код:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
........
    int i = -1;
    int f = fork();
    int ret = -1;
    pid_t ch_p;
 
    if (f == 0) {
        i = execl("/bin/sh", "sh", "/tmp/x.sh", NULL);
        if (i == -1)
            perror("execl");
    } else {
        ch_p = waitpid(f, &ret, 0);
        if (ch_p == -1) {
            perror("waitpid");
            return -1;
        }
    }
x = getenv("XXX");
    printf("\n1 x=%s", x);
........
$XXX не видится..

А если ". /tmp/x.sh" : то

sh: . /tmp/x.sh: Нет такого файла или каталога
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.07.2013, 14:25
Ответы с готовыми решениями:

Обращение к глобальной переменной скрипта
Есть скрипт, а в нём переменная и функция. Как из этой функции обратиться к этой переменной?

Различие глобальной и глобальной статической переменной
у нас есть заголовочный файл со стражами, допустим global.h , его используют несколько других хейдеров и с++ файлов . когда там описаны...

Как назначить переменной php-скрипта значение переменной скрипта js?
Как назначить переменной php-скрипта значение переменной скрипта js? Javascript находится в другом файле..

24
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
25.07.2013, 16:53
...

Добавлено через 6 минут
Цитата Сообщение от zongo Посмотреть сообщение
#!/bin/sh
Это ссылка на bash ?
Попробуй: #!/bin/bash
0
1 / 1 / 0
Регистрация: 12.01.2013
Сообщений: 39
25.07.2013, 16:58  [ТС]
Цитата Сообщение от castaway Посмотреть сообщение
...
Это ссылка на bash ?
Попробуй: #!/bin/bash
вообще это именно sh (там где будет это юзаться баша нет)

и export $XXX не катит..: bad variable name

Добавлено через 3 минуты
как альтернатику sh можно использовать ksh.
только будет ли толк?
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
25.07.2013, 16:59
Цитата Сообщение от zongo Посмотреть сообщение
вообще это именно sh
Что за интерпретатор такой sh ? sh обычно это символьная ссылка на какой-то интерпретатор, обычно bash, ash, csh, tcsh и т.д.
В разных интерпретаторах разные команды экспорта переменных, в bash это export.
0
1 / 1 / 0
Регистрация: 12.01.2013
Сообщений: 39
25.07.2013, 17:06  [ТС]
Цитата Сообщение от castaway Посмотреть сообщение
Что за интерпретатор такой sh ? sh обычно это символьная ссылка на какой-то интерпретатор, обычно bash, ash, csh, tcsh и т.д.
В разных интерпретаторах разные команды экспорта переменных, в bash это export.
Действительно.. На минте у меня оказалось /bin/sh -> dash
В итоге все это будет на солярисе..

Но тогда тогда получается что начальную (глобальную) переменную можно забрать из профайла и потом ее юзать? Но браться то она будет каждый раз старая (профайл-то не измениться)...

И почему даже если выполнить . ./x.sh в другом терминале ее (ХХХ) не будет? Или это приколы этого dash'а?
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
25.07.2013, 17:10
Узнай какой на солярисе интерпретатор, посмотри как там экспортируются переменные.
0
1 / 1 / 0
Регистрация: 12.01.2013
Сообщений: 39
25.07.2013, 17:23  [ТС]
Цитата Сообщение от castaway Посмотреть сообщение
Узнай какой на солярисе интерпретатор, посмотри как там экспортируются переменные.
SHELL=/sbin/sh

ls -l /sbin/sh
-r-xr-xr-x 2 root root 299496 Апр 7 2002 /sbin/sh

sh, jsh - standard and job control shell and command interpreter

я так понимаю что это аналог ksh'a



/me посел man'ить

Добавлено через 6 минут
$ man ksh

export [ name[=value] ] ...
The given names are marked for automatic export to the
environment of subsequently-executed commands.

game over чтоли??!!

Т.е. "глобально" это только для потомков и все...?!
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
25.07.2013, 17:25
Цитата Сообщение от zongo Посмотреть сообщение
я так понимаю что это аналог ksh'a
Почему ты так решил? Похоже что jsh - это Java Shell.
0
1 / 1 / 0
Регистрация: 12.01.2013
Сообщений: 39
25.07.2013, 17:26  [ТС]
Цитата Сообщение от castaway Посмотреть сообщение
Почему ты так решил? Похоже что jsh - это Java Shell.
man sh

export [ name ... ]
The given names are marked for automatic export to the
environment of subsequently executed commands.
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
25.07.2013, 17:29
Цитата Сообщение от zongo Посмотреть сообщение
man sh
export [ name ... ]
The given names are marked for automatic export to the
environment of subsequently executed commands.
Ты ввел эту команду на Solaris ?
0
1 / 1 / 0
Регистрация: 12.01.2013
Сообщений: 39
25.07.2013, 17:30  [ТС]
для формальности:

$ uname -a
SunOS z1 5.9 Generic_Virtual sun4u sparc SUNW,Sun-Fire-V240

Добавлено через 56 секунд
Цитата Сообщение от castaway Посмотреть сообщение
Ты ввел эту команду на Solaris ?
да.. если проверять то уже на соляре сразу..
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
25.07.2013, 17:31
Тогда со скриптом проблем быть не должно. Попробуй запусти из консоли свой скрипт:
Bash
1
2
3
4
#!/bin/sh
 
XXX=`date`;
export XXX;
И из командной строки посмотри чему равна XXX: echo $XXX
0
1 / 1 / 0
Регистрация: 12.01.2013
Сообщений: 39
25.07.2013, 17:34  [ТС]
имя скрипта другое, но не суть - .с тоже поправлен

вывод с set -x
# ./a.sh
+ date
a=Чтв 25 Июл 2013 18:26:40
+ export a
+ echo Чтв 25 Июл 2013 18:26:40

Чтв 25 Июл 2013 18:26:40

z1 root # echo $a
Чтв 25 Июл 2013 18:04:09
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
25.07.2013, 17:37
Очевидно что проблема не в скрипте.
Цитата Сообщение от zongo Посмотреть сообщение
.с тоже поправлен
Т.е. ты уже решил проблему?
0
1 / 1 / 0
Регистрация: 12.01.2013
Сообщений: 39
25.07.2013, 17:41  [ТС]
Цитата Сообщение от castaway Посмотреть сообщение
Очевидно что проблема не в скрипте.Т.е. ты уже решил проблему?
нет :_( (до этого просто пробовал на минте, а сейчас пробовал на саляре)


по отдельности и .с и .sh нормально работают (для потомков). но мне надо перекинуть данные (строка) между разными процессами (не потоками) посредством env.

судя по ману это никак нельзя (не для потомков), поэтому надо юзать или файлы или пайпы или что-то еще...
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
25.07.2013, 18:34
Если тебе необходимо обобщить данные между приложениями, то почему бы не воспользоваться специально созданными для этого функциями?
Примеры с использованием Shared Memory: http://www.cs.cf.ac.uk/Dave/C/node27.html
0
1 / 1 / 0
Регистрация: 12.01.2013
Сообщений: 39
25.07.2013, 19:12  [ТС]
Цитата Сообщение от castaway Посмотреть сообщение
Если тебе необходимо обобщить данные между приложениями, то почему бы не воспользоваться специально созданными для этого функциями?
Примеры с использованием Shared Memory: http://www.cs.cf.ac.uk/Dave/C/node27.html
да, ты прав - выход... но ради одной строчки городить IPC? Да и скрипты разве умеют обращаться с shm без прокладок?
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
25.07.2013, 19:20
Цитата Сообщение от zongo Посмотреть сообщение
Да и скрипты разве умеют обращаться с shm без прокладок?
Ты же вроде говорил что тебе между процессами надо? Если нужно использовать скрипты, тогда, думаю, все-таки лучше пайпы.
0
1 / 1 / 0
Регистрация: 12.01.2013
Сообщений: 39
25.07.2013, 19:30  [ТС]
Цитата Сообщение от castaway Посмотреть сообщение
Ты же вроде говорил что тебе между процессами надо? Если нужно использовать скрипты, тогда, думаю, все-таки лучше пайпы.
да, между процессами. Пока либо файло либо пайпы...

Просто хотелось "красивше" так сказать, одной строчкой =)

зы. Идейку мне подкинули, но пока не айс... Как решу - выложу кодег.
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
25.07.2013, 19:34
Интересно, что за идейка... Надеюсь не через файлы переменную шарить?))
Да и, кстати, через Shared Memory не так уж и много городить надо. Буквально в 5 строк можно сделать.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.07.2013, 19:34
Помогаю со студенческими работами здесь

Изменение глобальной переменной
Есть класс и кусок main-а, в класса я должен при определенном условии изменять скорость движения спрайтов(float speed), но переменная в...

Объявление глобальной переменной
Написал свой класс в отдельном модуле называется fieldnet.h - объявление класса, а в fieldnet.срр - расписаны все функции. Я подключаю...

Создание глобальной переменной
Использую code igniter. Как создать переменную? Такую же как например base_url();

Значение глобальной переменной
Всем доброго времени суток, возможно такое было уже где-то извеняюсь за повтор, но я не нашол подобной темы. Я не могу понять как и где...

Избавиться от глобальной переменной
#include <iostream> // подключаем ввод/вывод #include <cmath> // подключаем математические...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru