Скрипты И Совметимость Операционных Систем, Рабочие файлы скриптов в Unix системах |
Здравствуйте, гость ( Вход | Регистрация )
Скрипты И Совметимость Операционных Систем, Рабочие файлы скриптов в Unix системах |
15.11.2009, 13:43
Сообщение
#21
|
|
Продвинутый участник Группа: Пользователи Сообщений: 162 Регистрация: 19.8.2009 Из: Москва Пользователь №: 4 201 Спасибо сказали: 24 раза |
Свистопляска с кроссплатформенностью мультистрок. Переводы строк для различных платформ: \r\n для DOS формата, \n - для UNIX формата, \r - для Mac формата. У меня под CentOS 5.3 нормально работают скрипты с \r\n А вот в указании пути потребовалось вводить ДВОЙНОЙ прямой слеш - "//" Вместе с тем НЕ ВСЕ скрипты, содержащие относительный путь работают. Из-за некоторых таких скриптов Птоха просто отключается в какой-то момент. Подскажите КАК заменить относительный путь на абсолютный, к примеру в скрипте AnekBot.lua Впрочем проблема может быть в ином: скрипт Kinozal_tv.lua не имеет папки с файлами, и в нем не прописан путь к ней, однако, как и с AnekBot.lua, после включения скрипта Птоха через некоторое время отключается полностью. |
|
|
15.11.2009, 18:41
Сообщение
#22
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
\r\n в юниксах может работать, тут ничего удивительного нету, однако принято что в юниксах перенос строки это \n. Придерживаясь стандарта, можно в будущем избежать ошибок.
По поводу двойного слеша // - это не так. Как любая юникc система сентос использует одиночный слеш / |
|
|
16.11.2009, 6:43
Сообщение
#23
|
|
Продвинутый участник Группа: Пользователи Сообщений: 162 Регистрация: 19.8.2009 Из: Москва Пользователь №: 4 201 Спасибо сказали: 24 раза |
\r\n слишком много по всем скриптам у меня, чтобы их изменять на \n для юникса. Напомните, влияет ли такое положение на быстродействие? - в дереве сообщений по теме не просто найти что нужно, а как раскрыть все сообщения, я пока не нашел...
Касательно двойного слеша: я не помню полностью ситуацию (за неимением достаточных познаний подбирал опытно), но в любом случае скрипты, содержащие в указании пути одиночные прямые и обратные слеши, согласились работать в сентос только с двойным прямым... |
|
|
16.11.2009, 7:51
Сообщение
#24
|
|
Самый главный активист :-D Группа: Модераторы Сообщений: 2 790 Регистрация: 29.6.2008 Из: г. Тула Пользователь №: 97 Спасибо сказали: 440 раз |
|
|
|
16.11.2009, 18:11
Сообщение
#25
|
|
Продвинутый участник Группа: Пользователи Сообщений: 162 Регистрация: 19.8.2009 Из: Москва Пользователь №: 4 201 Спасибо сказали: 24 раза |
|
|
|
16.11.2009, 18:16
Сообщение
#26
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
Не критично. Чисто соглашение, которое в некоторых системах может иметь и другие представления. Однако \n - это основное, которое поддерживается всеми unix системами без исключения.
|
|
|
1.12.2009, 12:03
Сообщение
#27
|
|
Продвинутый участник Группа: Пользователи Сообщений: 162 Регистрация: 19.8.2009 Из: Москва Пользователь №: 4 201 Спасибо сказали: 24 раза |
заменить надо следующие строчки: Код path = Core.GetPtokaXPath().."scripts/dats" -- имя папки gbfile=path.."/guestbook.dat" --имя файлв nfile=path.."/news.dat" -- директория для файла rfile=path.."/requests.dat" -- директория для файла os.execute("mkdir ".."\""..path.."\"") В данном примере нет завершения: какой именно строкой их заменить? А иллюстрация здесь необходима для объяснения теоретических выкладок. У меня есть другой пример: Код local sScriptsPath = Core.GetPtokaXPath():gsub("/", "\\").."scripts\\" local sPath = "PM.Offline-No.Gemorroy\\" local sPostFile = "tPost.tbl" local sLogFile = "OfflinePostLog.log" -- лог-файл Я несколько раз прочел все сообщения данной темы, но не смог понять как применить способ sMainPath, sMainSlash = debug.getinfo(1).source:match"^@?(.+([/\\])).-$" в моем случае. |
|
|
1.12.2009, 12:20
Сообщение
#28
|
|
Главный ра******й тут... Группа: Главные администраторы Сообщений: 1 727 Регистрация: 18.5.2008 Из: RF, 2la Пользователь №: 1 Спасибо сказали: 776 раз |
просто убери
Код :gsub("/", "\\") и везде поменяй \\ на /
|
|
|
1.12.2009, 13:07
Сообщение
#29
|
|
Продвинутый участник Группа: Пользователи Сообщений: 162 Регистрация: 19.8.2009 Из: Москва Пользователь №: 4 201 Спасибо сказали: 24 раза |
просто убери Код :gsub("/", "\\") и везде поменяй \\ на /Спасибо, работает. Только вот ясности в применении кроссплатформенного метода sMainPath, sMainSlash = debug.getinfo(1).source:match"^@?(.+([/\\])).-$" не прибавилось, которым, надо полагать, можно было заменить указания пути в обоих упомянутых случаях. Это было б необходимо для какого-нибудь третьего случая, что бы уже править самостоятельно... |
|
|
1.12.2009, 13:14
Сообщение
#30
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
А что тут непонятного?
Функция Core.GetPtokaXPath() есть только а птохе. А конструкция Код sMainPath, sMainSlash = debug.getinfo(1).source:match"^@?(.+([/\\])).-$" будет работать в любом LUA скрипте. В переменной sMainPath будет содержаться абсолютный путь до интерпретируемого скрипта, а в переменной sMainSlash будет содержаться слеш, кторый используется в вашей системе.
|
|
|
1.12.2009, 13:18
Сообщение
#31
|
|
Продвинутый участник Группа: Пользователи Сообщений: 162 Регистрация: 19.8.2009 Из: Москва Пользователь №: 4 201 Спасибо сказали: 24 раза |
|
|
|
1.12.2009, 13:29
Сообщение
#32
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
Заметьте, что функция Core.GetPtokaXPath() возвращает абсолютный путь выполняемого файла (в данном случае путь до файла PtokaX.exe), а предложенная конструкция возвращает путь до интерпретируемого скрипта.
Например, у нас в папке scripts есть скрипт test.lua. Тогда для того, чтобы определить абсолютный путь, по которому находится этот скрипт, мы можем сделать так: Цитата sMainPath = Core.GetPtokaXPath().."scripts/" или же так:Код sMainPath, sMainSlash = debug.getinfo(1).source:match"^@?(.+([/\\])).-$" Другой пример. В папке scripts находится некая папка folder, и в этой папке folder находится некий файл test2.lua, который мы хотим подключить из скрипта test.lua. В этом случае можно сделать так: Код sMainPath = Core.GetPtokaXPath().."scripts/" или же так:sPath2 = sMainPath.."folder/" dofile(sPath2.."test2.lua") Код sMainPath, sMainSlash = debug.getinfo(1).source:match"^@?(.+([/\\])).-$" sPath2 = sMainPath.."folder"..sMainSlash dofile(sPath2.."test2.lua") Надеюсь теперь понятны тонкости обращения с тем и другим способом? |
|
|
1.12.2009, 14:14
Сообщение
#33
|
|
Продвинутый участник Группа: Пользователи Сообщений: 162 Регистрация: 19.8.2009 Из: Москва Пользователь №: 4 201 Спасибо сказали: 24 раза |
|
|
|
2.12.2009, 8:04
Сообщение
#34
|
|
Белый Волк Группа: Пользователи Сообщений: 1 723 Регистрация: 11.9.2008 Из: г.Томск Пользователь №: 516 Спасибо сказали: 657 раз |
Цитата Надеюсь теперь понятны тонкости обращения с тем и другим способом? Setuper, ты меня извини, конечно, но ты этот способ - sMainPath, sMainSlash = debug.getinfo(1).source:match"^@?(.+([/\\])).-$" - проталкиваешь уже больше года, наверно, но вот только сейчас снизошёл до объяснения, как применить на практике...Лично я тоже не понимал, как применить. До этого момента. Хотя прекрасно обходился без него, ставя / вместо \\ |
|
|
2.2.2011, 22:35
Сообщение
#35
|
|
Абсолютный новичок Группа: Пользователи Сообщений: 2 Регистрация: 31.1.2011 Пользователь №: 8 691 Спасибо сказали: 0 раз |
Здравия !
Я пути в скриптах исправил, но они не загружаются на ptokax_0.4.1.2c-2~eglibc_i386.deb !getscripts показывает,что скрипты есть но не загруженные. Как их загрузить и проверить правильность написания ? Может кто выложит рабочие скрипты (на ptokax_0.4.1.2c-2~eglibc_i386.deb) для примера ? |
|
|
3.2.2011, 1:42
Сообщение
#36
|
|
Белый Волк Группа: Пользователи Сообщений: 1 723 Регистрация: 11.9.2008 Из: г.Томск Пользователь №: 516 Спасибо сказали: 657 раз |
По-моему, на безгуйных птоках надо до запуска Птоки открыть файл Scripts.xml и там поставить 1 вместо 0 для каждого названия скрипта вот так:
Цитата <Enabled>1</Enabled> Либо попробуй при запущенной Птоке применить команду Цитата !startscript <название скрипта>
|
|
|
3.2.2011, 2:02
Сообщение
#37
|
|
Абсолютный новичок Группа: Пользователи Сообщений: 2 Регистрация: 31.1.2011 Пользователь №: 8 691 Спасибо сказали: 0 раз |
Благодарю за ответ,вопрос решён.
Только скрипт для управления в меню теперь сразу показывает все возможные команды,надо будет другой поискать А так хорошо бы скрипты для ptokax под линуксом где-то опубликовать |
|
|
3.2.2011, 3:16
Сообщение
#38
|
|
Белый Волк Группа: Пользователи Сообщений: 1 723 Регистрация: 11.9.2008 Из: г.Томск Пользователь №: 516 Спасибо сказали: 657 раз |
Скрипты для Птоки не делятся на линуксовые или иные, они все работают и на линуксах (с учётом оговорок в данной теме), ну и с заменой виндовых библиотек на линуксовые при необходимости.
|
|
|
Похожие темы
|
Сейчас: 23.11.2024, 7:46 |