Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: задать переменную *nix

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Описание: из скрипта в глобальной области
DlTA
Отправлено: 12 Июля, 2013 - 10:00:40
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




как задать переменную в *nix из скрипта?
тоесть если сделать в консоли
$ TS='123'
да переменная установилась
а если написать sh скриптик

то ничего не происходит, переменная из глобальной области не меняет значение
 
 Top
LIME
Отправлено: 12 Июля, 2013 - 10:15:12
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




Цитата:
TS='321'
echo $TS

работает
(Добавление)
или я не так понял?
в любом случае каждый запущенный bash это отдельный процесс
 
 Top
DlTA
Отправлено: 12 Июля, 2013 - 10:25:07
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




не так понял


есть глобальная $PS1='123'
я хочу чтобы после запуска моего *.sh скрипта
$PS1='321'

тоесть если я указываю в скрипте PS1='321' то она, насколько я понял локальна, а нужно чтоб изменилось в глобальной области видимости
 
 Top
LIME
Отправлено: 12 Июля, 2013 - 10:28:12
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




 
 Top
DlTA
Отправлено: 12 Июля, 2013 - 10:53:29
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




где там ответ не нашел

тут http://hashcode[dot]ru/questions/228[dot][dot][dot]D0%B2-linux-unix

тоже нет
(Добавление)
блин везде описано почему не работает, но не вижу как это обойти кроме как прописать это дело в конфиге баша

(Отредактировано автором: 12 Июля, 2013 - 10:59:37)

 
 Top
Ch_chov
Отправлено: 12 Июля, 2013 - 11:29:16
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008  
Откуда: из города


Помог: 90 раз(а)




В дочерний скрипт можно передать переменную с помощью export.
 
 Top
DlTA
Отправлено: 12 Июля, 2013 - 11:32:47
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




Ch_chov пишет:
В дочерний скрипт можно передать переменную с помощью export.

во во , а нужно в обратном направлении
(Добавление)
вот думаю, может это у меня виндовая привычка что я всегда и везде могу изменить)

решение таки через ( | )
прописал алиас в конфиге баша, и теперь вызвав его получаю нужное значение переменной
 
 Top
Мелкий Супермодератор
Отправлено: 12 Июля, 2013 - 11:51:19
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




CODE (bash):
скопировать код в буфер обмена
  1. user@brtech-ws-03:~$ cat shell
  2. #!/bin/bash
  3. TS='123'
  4. user@brtech-ws-03:~$ TS='321'
  5. user@brtech-ws-03:~$ . ./shell
  6. user@brtech-ws-03:~$ echo $TS
  7. 123
  8. user@brtech-ws-03:~$

?


-----
PostgreSQL DBA
 
 Top
DlTA
Отправлено: 12 Июля, 2013 - 12:07:34
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




по пунктам:
создал запускаемый файл,
в нем задал значение,
запустил,

блин но я вроде тоже делал, но у меня не получалось.
 
 Top
Мелкий Супермодератор
Отправлено: 12 Июля, 2013 - 12:15:16
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Обратите внимание на точку перед ./shell
В ней вся суть и различие областей видимости.


-----
PostgreSQL DBA
 
 Top
DlTA
Отправлено: 12 Июля, 2013 - 12:32:55
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




воооооооооо +

что она означает?
(Добавление)
и не понятно почему нет того же результата
а точнее даже ошибка при
 
 Top
Мелкий Супермодератор
Отправлено: 12 Июля, 2013 - 12:47:33
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Не знаю Меланхолия


-----
PostgreSQL DBA
 
 Top
EuGen Администратор
Отправлено: 12 Июля, 2013 - 12:55:06
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Мелкий
"." перед командой - это не область видимости. Точнее, это можно сравнить с областью видимости только если исполнение идёт из самой командной строки.
DlTA
"." - это подключение кода. Работает так:
* Если выполняется непосредственно из командной строки, то исполняет скрипт
* Внутри другого скрипта, загружает сам скрипт (тот, что после точки).
Эффект - такой же, как у директивы #include для программ C.

Поэтому ". bash" - не имеет смысла, ведь "bash" не является верным путём к исходному коду (а если бы и являлся, то это - бинарный файл, который не имеет ничего общего с shell-скриптом).


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
DlTA
Отправлено: 12 Июля, 2013 - 13:08:00
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




EuGen а можно более простым языком, не доходит

почему нельpя например

(Отредактировано автором: 12 Июля, 2013 - 13:08:21)

 
 Top
EuGen Администратор
Отправлено: 12 Июля, 2013 - 13:58:32
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




DlTA
Так как речь идёт о запуске через командную строку, то "." попытается исполнить скрипт "cat". В зависимости от системы, ошибка может быть - либо не найден файл, либо, что скорее всего - то, что файл является бинарным (так как альяс "cat" всё же распознается системой).
На практическом примере:
CODE (bash):
скопировать код в буфер обмена
  1. user@host:~$ cat test.sh
  2. #!/bin/bash
  3. echo "Executed!"
  4. user@host:~$ ./test.sh
  5. Executed!
  6. user@host:~$ . ./test.sh
  7. Executed!
  8. user@host:~$ . cat ./test.sh
  9. bash: .: /usr/bin/cat: cannot execute binary file

- в последнем случае система попыталась подключить файл "cat", обнаружила, что это альяс для /usr/bin/cat - попыталась подключить его (внимание - подключить как sh-скрипт) - и, разумеется, потерпела неудачу, ведь /usr/bin/cat - это бинарный файл, а не файл с текстом sh-скрипта.
Для ещё большей понятности:
CODE (bash):
скопировать код в буфер обмена
  1. user@host:~$ sudo vim /usr/bin/sometest
  2. user@host:~$ sudo chmod 755 /usr/bin/sometest
  3. user@host:~$ which sometest
  4. /usr/bin/sometest
  5. user@host:~$ sudo cat /usr/bin/sometest
  6. #!/bin/bash
  7. cat $1
  8. user@host:~$ . sometest ./test.sh
  9. #!/bin/bash
  10. echo "Executed!"

- я создал исполняемый файл /usr/bin/sometest, в который поместил текстовый sh-скрипт, который исполняет cat для первого аргумента командной строки. Такой скрипт, в отличие от cat, будет успешно подключён (так как является текстом) и исполнен (так как является правильным sh-скриптом)


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Администрирование *nix »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB