Главная Мой профиль Регистрация Выход Вход
Приветствую Вас Гость | RSS
Пятница
26.05.2017
23:44
Установка Игр в Ubuntu
Темы
...
 
Форма входа
Главная » Статьи » Ubuntu: Записная книжка

Bash script & PureBasic

Ubuntu, скрипт и PureBasic

( Bash script & PureBasic )

При создании программ на PureBasic, в ОС Linux, иногда требуется применения shell скриптов в ходе выполнения этой программы. Можно поступить следующим образом:


[код purebasic]
RunProgram("gnome-terminal","-x "+"bash -i -c "+Chr(34)+". script.sh; read"+Chr(34),GetPathPart(ProgramFilename()),

откроется окно терминала, где будет выполнен script.sh, т.е. наш запускаемый скрипт.

Все это очень хорошо, но надо будет таскать "паровозом" со своей программой и этот скрипт, если программа большая и содержит еще кучку дополнительных внешних файлов, то с этим можно смирится, а если наша программка легковесная и представляет из себя только один запускающий файл, то прицеплять к ней еще и скрипт было бы не эстетично :)

Как решение,при необходимости, можно прописать скрипт в тело программы на PureBasic, которая при запуске будет его генерировать и запускать в терминале:

[код purebasic]
P.s=GetPathPart(ProgramFilename())
script.s = GetPathPart(P) + "script.sh"
OpenFile(File_0, P+"script.sh")
FileSeek(File_0, Lof(0))
WriteStringN(File_0, "#!/bin/bash")
WriteStringN(File_0, "echo "+Chr(34)+"Hello World"+Chr(34))
CloseFile(File_0)
RunProgram("gnome-terminal","-x "+"bash -i -c "+Chr(34)+". script.sh; read"+Chr(34),GetPathPart(P))


Показанный код, при запуске, генерирует (создает) файл script.sh и прописывает в нем:


#!/bin/bash
echo "Hello World"

и далее запускает этот скрипт из терминала.

Bash & PureBasic

Конечно, скрипт из одной строки отображающий "Hello World" прописывать было бы не обязательно, можно обойтись и одной командой, хотя бы так:

[код purebasic]
RunProgram("gnome-terminal","-x "+"bash -i -c "+Chr(34)+"echo "+"Hello World"+"; read"+Chr(34),GetPathPart(ProgramFilename()))

просто это как пример, ну Вы понимаете :)

Еще один способ записи bash скрипта в исполняемый файл на PureBasic

P.s=GetPathPart(ProgramFilename()) ; директория запуска программы
Text.s=PeekS(?Im1, ?Im2-?Im1, #PB_UTF8) ; выделение памяти/загружаем текст из памяти, ?Im2-?Im1 размер памяти в байтах, занимаемый файлом
Count=CountString(Text,#LF$) ; подсчет строк в скрипте (можно и без этой строки, сразу вписать кол. строк Вашего скрипта в цикл)

OpenFile(File_0, P+"tmp.sh")  ; образуем временной файл temp.sh
  For i=1 To Count
    WriteStringN(File_0, StringField(Text,i,#LF$)) ; запись временного скрипта tmp.sh
  Next i
WriteStringN(File_0, "rm -rf tmp.sh") ; !!! строчка для "самоликвидации" tmp.sh 
CloseFile(File_0)
RunProgram("gnome-terminal","-x "+"bash -i -c "+Chr(34)+". tmp.sh; read"+Chr(34), GetPathPart(P)) ; исполнение скрипта в терминале
Delay(100) ; небольшая временная задержка (для надежности/можно исключить)
End

DataSection
 Im1:
   IncludeBinary "Text.sh" ;в исполняемый файл записывается файл/скрипт с именем Text.sh находящийся в одной папке с исходным текстом
 Im2:
EndDataSection

При компиляции, Ваш bash скрипт Text.sh, который должен находиться в одной папке с исходным текстом компилируемой программы, будет "вшит" в исполняемый файл. В дальнейшем, при работе исполняемого файла Вашей программы будет образовываться временной Bash скрипт tmp.sh, который и будет исполняться в терминале.




Источник: http://ubuntu-wine.ru
Категория: Ubuntu: Записная книжка | Добавил: Soliton (26.04.2013) | Автор: Airvikar W
Просмотров: 2439 | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Программы
 
 
 
Статистика
Яндекс.Метрика

Рейтинг@Mail.ru
Мои баннеры
 


Dmoz
Категории раздела
Wine на практике [27]
Ubuntu: Записная книжка [14]
Игры в Ubuntu [11]
Игры установленные в Ubuntu с помощью приложения Wine.

 Copyright MyCorp © 2017
Сделать бесплатный сайт с uCoz