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 [2]
отработало точно так же как если бы скрипт был запускаем,
значит дело не в том является ли скрипт запускаем, а в том чтоб это был именно скрипт, текст которого будет подключен
но возникла идея, а как подключить выполняемый текст не из файла а из веденного буфера
например:
$ . TS # не работает, ругается на отсутствие файла
понятно что можно было прост сделать TA="tata", но все же
в чем разница между именем скрипта, и переменной в данном случае?
EuGen
Отправлено: 12 Июля, 2013 - 14:24:36
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
DlTA пишет:
значит дело не в том является ли скрипт запускаем, а в том чтоб это был именно скрипт, текст которого будет подключен
EuGen пишет:
Такой скрипт, в отличие от cat, будет успешно подключён (так как является текстом) и исполнен (так как является правильным sh-скриптом)
- я это и пытаюсь пояснить. Представьте себе, например, include в PHP - Вы не сможете подключить бинарный файл. "Исполнимый" - это я имел ввиду не вопрос разрешений (chmod), а то, можно ли файл исполнить как sh-скрипт, для чего нужно соблюдение двух условий - того, что файл является текстовым, и того, что файл является верным sh-скриптом.
chmod в примере выше сделан для того, чтобы система смогла включить скрипт sometest в список глобально определённых. Сравните:
which: no sometest in(/usr/local/bin:/usr/bin:/bin:/usr/games:/usr/lib/kde4/libexec:/usr/lib/qt/bin:/usr/share/texmf/bin:.)
user@host:~$ . sometest foo.sh
bash: sometest: No such file or directory
- по понятным причинам система более не считает sometest исполнимым глобально файлом, потому ". sometest" не трактуется как попытка исполнить глобальный скрипт, система ищет несушествущий файл "sometest" - что приводит к ошибке.
DlTA пишет:
понятно что можно было прост сделать TA="tata", но все же
в чем разница между именем скрипта, и переменной в данном случае?
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
DlTA
Отправлено: 12 Июля, 2013 - 14:54:56
Постоянный участник
Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010
Помог: 53 раз(а)
EuGen пишет:
Кажется, понял
все же не,
у вас в примере на входе в скрипт подается имя файла со скриптом,
а я говорю о случае когда на вход подается текст скрипта, не имя файла со скриптом, а именно сам выполняемый код. (Добавление)
налалог
<?php eval('code');
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
DlTA
Опять неясно. Судя по конвейерной передаче, Вы пытаетесь передать содержимое файла в eval. Но зачем, если выше уже обсудили, как это делается (через ".")? Да и зачем пытаться присвоить значение переменной, которая будет использоваться только в том коде, который подключается?
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
DlTA
Отправлено: 12 Июля, 2013 - 15:56:38
Постоянный участник
Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010
Помог: 53 раз(а)
присваивание это для проверки работы,
это я уже откланился от основной темы,
вопрос стоит eval работает с stdin или только с args
судя из тестов получается что eval обрабатывает только то что подается в виде аргумента, на входной поток не смотрит (Добавление)
пример чтоб не не смущала рабоат с файлами
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.