Запуск скрипта lua linux

Lua, os.execute и баш

Привет, лор. Есть ли способ запустить из программы на луа башевскую команду source? Допустим, что у меня есть файл foo.sh :

Мне надо запустить луа-скрипт, чтобы он запустил мой foo.sh так, чтобы в текущем сеансе появилась функция foo . Есть ли способ это сделать? Если написать в foo.lua просто

PS так же интересует аналогичная ситуация, только для переменных

source это shell builtin

Можно попробовать lua foo.lua | source /dev/stdin, а внутри принт того сорца.

А есть ли другие способы? export вроде тоже не подходит

запустить новый шелл

Нужно понимать, что шелл это обычный язык с интерактивным промптом, крутящийся в конкретном процессе, и кроме как интерактивно ничего туда «загрузить» не выйдет без поддержки с его стороны (в данном случае source из пайпа). Так же, как нельзя поменять переменную луа или создать луа-функцию через os.execute.

export всего лишь помечает переменную для передачи в envp при exec(), а запускаемый шелл забирает envp в обычные переменные, создавая видимость их наследования.

Я могу написать на баше обёртку, которая могла бы передавать все аргументы луа-скрипту, ну а луа может печатать в stdout сурсы, вместо того, чтобы выполнить их. Но тогда придётся запускать эту обёртку опять же через source:

Источник

LinuxShare

Вход для пользователей

Кто на сайте

Справочное руководство по языку Lua 5.1 :: 6 —

6 – Автономная Lua

Несмотря на то, что язык Lua был has разработан в качестве языка-расширения, для включения в программы-хозяева, написанные на C, он также зачастую используется как автономный язык. Интерпретатор Lua для автономного выполнения программ называется lua, и включен в стандартный пакет поставки. Автономный интерпретатор включает все стандартные библиотеки, в том числе библиотеку отладки.

Параметры запуска интерпретатора:

Опции (options) могут быть следующими:

  • -e stat: выполняет строку stat;
  • -l mod: «требует» mod;
  • -i: переходит в интерактивный режим после запуска script;
  • -v: выводит информацию о версии;
  • —: останавливает обработку опций (примечание: похоже, что просто-напросто игнорирует остальные опции);
  • -: использует stdin вместо файла и останавливает обработку опция.

После обработки опций, lua выполняет заданный скрипт script, передавая ему аргументы args как строковые. При вызове без аргументов, lua работает аналогично «lua -v –i» когда стандартным поток ввода (stdin) – терминал, и как «lua» — в противном случае.

Перед обработкой аргументов, интепретатор проверяет, выставлена ли переменная окружения LUA_INIT. Если ее формат @filename, то lua запускает файл. В противном случае, lua выполняет команду, записанную в переменной.

Все опции обрабатываются в рпямом порядке, за исключением опции -i. Например, следующий вызов

Приведет к тому, что интерпретатор сначала изменит значение a на 1, затем выведет значение переменной a (‘1’), и после этого запустит файл script.lua без аргументов. (В данном случае $ – приглашение командной строки (терминала). Ваше приглашение командной строки может отличаться.)

Перед началом выполнения скрипта, lua собирает все аргументы командной строки в глобальную таблицу arg. Имя скрипта сохранено по индексу 0, первый аргумент после имени скрипта – по индексу 1, и т.д. Все аргументы перед именем скрипта (т.е., имя интерпретатора и его опции) сохраняются с отрицательными индексами. Например, при вызовеl

Интерпретатор сначала запускает файл a.lua, затем создает таблицу

И, наконец, запускает файл b.lua. Скрипт вызывается с аргументами arg[1], arg[2], ···; он может также получить доступ к этим аргументам при помощи выражения обработки переменного количества аргументов (vararg expression) ‘. ‘.

Читайте также:  Мониторинг нагрузки компьютера linux

В интерактивном режиме, если вы вводите неполное выражение, интерпретатор ожидает его завершения и предоставляет новое поле для ввода.

Если глобальная переменная _PROMPT содержит строку, то ее значение используется в качестве строки запроса. Аналогично, если глобальная переменная _PROMPT2 содержит строку, ее значение используется в качестве «вторичной» строки запроса (используемой при вводе неполных выражений). Поэтому, обе строки запроса могут быть изменены непосредственно из командной строки.

(внешняя пара кавычек необходима шеллу, внутренняя – Lua). Также строки запроса могут быть изменены в любой программе Lua присваиванием переменной _PROMPT. Обратите внимание на использование -i для перехода в интерактивный режим; в противном случае, программ закончит выполнение сразу после выполнения оператора присваивания переменной _PROMPT.

Для представления возможности использовать Lua в качестве интерпретатора скриптов в Unix системах, автономный интерпретаор пропускает первую строку chunk если он начинается с#. Т.о., скрипты Lua могут быть превращены в исполняемые программы вызовом chmod +x и добавлением #! в начало файла, как показано в следующем примере:

(Конечно, местоположение интерапретатора Lua может изменяться. Т.о. если lua находится в каталоге, указанном в переменной окружения PATH, то

будет лучшим и более переносимым решением.)

Источник

Как установить Lua скриптовой язык в Linux

Lua описание

Lua – бесплатный и открытый, мощный, надежный, минимальный и встраиваемый язык скриптов.

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

Lua работает на всех, если не на большинстве Unix-подобных операционных систем, включая Linux и Windows; на мобильных операционных системах (Android, iOS, BREW, Symbian, Windows Phone); на встроенных микропроцессорах (ARM и Rabbit); на мэйнфреймах IBM и многом другом.

Lua Особенности:

  • Создает все системы со стандартным компилятором C.
  • Он замечательно легкий, быстрый, эффективный и портативный.
  • Его легко изучить и использовать.
  • Он имеет простой и хорошо документированный API.
  • Он поддерживает несколько типов программирования (например, процедурное, объектно-ориентированное, функциональное и управляемое данными программирование, а также описание данных).
  • Реализует объектно-ориентированное использование мета-механизмов.
  • Он также объединяет простой процедурный синтаксис с грозными конструкциями описания данных, внедренными вокруг ассоциативных массивов и расширяемой семантикой.
  • Поставляется с автоматическим управлением памятью с инкрементной сборкой мусора (таким образом, он идеально подходит для реальной конфигурации, сценариев, а также для создания прототипов).

Как установить Lua в Linux

Пакет Lua доступен в официальных хранилищах основных дистрибутивов Linux, вы можете установить последнюю версию с помощью соответствующего диспетчера пакетов в вашей системе.

Примечание. Текущая версия пакета Lua в репозитории EPEL – 5.1.4; поэтому для установки текущей версии вам необходимо собрать и установить ее из исходников, как описано ниже.

Установка Lua из исходников

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

Затем, чтобы создать и установить последнюю версию (версия 5.3.4 на момент написания этой статьи) Lua, запустите следующие команды, чтобы загрузить пакет tar ball, извлечь, построить и установить его.

После того, как вы его установили, запустите интерпретатор Lua, как показано:

Используя ваш любимый текстовый редактор, вы можете создать свою первую программу Lua следующим образом.

И добавьте следующий код в файл.

Сохраните и закройте файл. Затем запустите свою программу, как показано ниже:

Для получения дополнительной информации и получения информации о том, как писать программы Lua, перейдите по адресу: https://www.lua.org/home.html

Lua – это универсальный язык программирования, который используется во многих отраслях (от Интернета до игр и обработки изображений и др.), И он разработан с высоким приоритетом для встроенных систем.

Если вы столкнулись с ошибками во время установки или просто хотите узнать больше, используйте форму комментариев ниже, чтобы отправить нам свои мысли.

Читайте также:  Delivery club приложение для партнеров windows

Источник

Lua: как перестать встраивать и начать жить

Lua: как перестать встраивать и начать жить

За Lua прочно закрепилась слава полуязыка — инструмента, который при случае можно встроить, чтобы заскриптовать приложение, написанное на компилируемом языке вроде С++. Тем не менее Lua является вполне самостоятельным языком, имеющим свой интерпретатор, возможность создания модулей, большое число библиотек, и при этом данный ЯП обладает минимальным размером среди аналогов. Проще говоря у нас есть все, чтобы создавать такие же приложения как на perl, python, и вообще любом другом распространенном языке программирования.

Я могу предложить вам следующие доводы в пользу Lua:

  • — приложения будут легко переносимы между Windows и Linux (не факт что код будет работать без изменений, но портирование правда пройдет безболезненно, если не были использованы платформоспецифичные библиотеки)
  • — малый оверхед создаваемых программ
  • — высокая скорость работы и загрузки приложений
  • — возможность оперативно «приклеить» к вашему приложению любую С-библиотеку — лучшего «клея» для библиотек вы не найдете
  • — приятный минималистичный синтаксис языка, с возможностью реализации на нем современных парадигм программирования
  • — программы на Lua очень легко развертывать
  • — малое потребление памяти

Чтобы продемонстрировать возможности Lua, я покажу как с его использованием создать небольшую программу для построения графиков по точкам с возможностью сохранения графика в виде файла изображения.

В качестве графического тулкита будем использовать iup — кроссплатформенную библиотеку, изначально созданную с расчетом использования из Lua.

Установка Lua SDK

В рамках идеи использования Lua как самостоятельного ЯП, была создана сборка Lua for Windows, которая содержит себе библиотеки, необходимые в повседневных задачах, возникающих при программировании под указанную ОС: работы с БД, GUI, парсинг XML и т.д. Пусть вас не смущает, что версия Lua в сборке 5.1, а не 5.2 — особой разницы в нашем случае между ними нет.

Скачайте и установите сборку.

Краткое описание концепции iup

Я долго думал, как же расписать процесс создания программы, не вдаваясь подробно в устройство iup. И решил коротко описать его основные принципы:

  • — iup.dialog является корневым элементом интерфейса программы — в этом контейнере размещаются все элементы
  • — позиционирование элементов в контейнере производится при помощи layout-ов: задания правил размещения элемента в контейнере. Iup сам расположит и отрисует элемент согласно правилам. Основные контейнеры — фрейм, вертикальный сайзер, горизонтальный сайзер.
  • — обработчики событий задаются в виде функций, прикрепленных к виджету
  • — после создания диалога запускается цикл обработки событий

Если вы ранее писали для GUI при помощи Tk, WxWidgets или WinAPI, то все это покажется знакомым. Если нет, то программа довольно подробно покрыта комментариями.

Код программы
Пара слов о развертывании

Скрипт можно запустить при помощи команды:

В данном случае библиотеки будут подключаться из поддиректории clibs/, которая находится в директории, куда был установлен Lua for Windows. Чтобы максимально компактно упаковать скрипт и библиотеки для переноса на другую машину, достаточно скопировать в одну папку следущие файлы(указаны с относительными путями от директории установки Lua):

Не забудьте поместить в эту папку и сам скрипт с программой. Теперь вы можете перенести эту папку на другую машину и запустить вашу программы командой, указанной выше. При этом никакие другие действия по установке библиотек и рантайма не нужны.

К сожалению файлы cd.dll, cdluad51.dll и iupcd.dll в данной версии Lua for Windows могут работать некорректно, поэтому рекомендую взять их из архива по ссылке ниже.

Итоги

Архив с рабочей версией тут, для удобства добавлена пускалка app.bat.

В результате получили, пусть и неказистую, утилиту, имеющую такой же функционал, как и если бы она была написана на «серьезном» языке программирования. При этом простую в развертывании и суммарным весом менее 2 мб. Потребление памяти — около 7 мб. Исходный код доступен для редактирования, сам Lua интерактивно понятен, что упрощает доработку подобного софта на местах.

Читайте также:  Установка windows с флешки unetbootin для

На мой взгляд, это отличный выбор для написания учебного софта для школ и институтов, а также для внутреннего использования на предприятиях. Так как слабые машины до сих пор в изобилии присутствуют в подобных местах по всему СНГ, то использование Luа подобным образом целесообразно, особенно в свете постепнного прихода Linux на десктопы. К тому же тенденцию потери исходников самописного софта при жуткой его же забагованности можно приравнять к национальному бедствию.

Источник

Запуск скрипта lua linux

Вся серия не будет подчиняться какой-то системе. Уроки будут последовательно вводить ряд конструкций языка, чтобы уже к третьему или четвёртому уроку вы уже могли писать свои программы. Моя цель — подтолкнуть вас к самостоятельному изучению языка, помочь ощутить его, а не разъяснить от А до Я — если хотите освоить язык полностью, читайте справочное руководство (которое, хоть и скверно, переведено на русский язык: http://www.lua.ru/doc/). Чем раньше вы перейдёте от уроков «для чайников» в Сети к изучению справочника, тем лучше.

Если что-то непонятно — обязательно задайте вопрос в комментариях, и я и другие участники постараемся вам помочь.

Lua — популярный, несложный для освоения встраиваемый интерпретируемый динамически типизированный язык программирования общего назначения. Нет, вам необязательно понимать и половины слов, сказанных в предыдущем предложении — главное знайте, что он популярный и несложный. Кстати, простотой, а также маленьким размером дистрибутива (около 150 килобайт), он и заслужил свою популярность. Скрипты на Lua поддерживаются большим количеством приложений, в том числе играми. World of Warcraft и S.T.A.L.K.E.R. используют язык Lua. Мой любимый игровой движок, LÖVE, позволит вам с помощью Lua с лёгкостью создавать разнообразные игры. Как видите, Lua открывает вам немалые горизонты!

Прежде чем мы начнём, вам следует обустроить среду для программирования: то есть, найти программу, которая принимала бы написанный вами код на Lua и исполняла его: интерпретатор. Тут есть три варианта:

1. Скачать официальный дистрибутив Lua с одного из сайтов, поставляющих их.

С официального сайта Lua можно скачать только исходные коды интерпретатора. Однако поизучав http://lua.org/download.html в разделе Binaries, вы можете обнаружить ссылки на сайты с исполняемыми файлами для Windows. Один из них: http://joedf.users.sourceforge.net/luabuilds/. Загрузите оттуда один из архивов (совпадающий с вашей платформой: Win32 или Win64) и распакуйте его куда-нибудь, желательно в каталог с коротким путём: вроде C:\lua. Отныне я буду полагать, что вы пользуетесь Windows, и ваш интерпретатор лежит именно там.

Пользователям операционных систем на базе Linux в этом смысле проще: им достаточно воспользоваться пакетным менеджером и установить Lua из репозиториев. В Debian и Ubuntu это делается командой apt-get install lua, а в Fedora, Red Hat и производных дистрибутивах — yum install lua. Однако не доверяйте мне слепо и обратитесь к справочнику вашей операционной системы, чтобы узнать, как именно это делается у вас.

2. Использовать онлайн-интерпретатор.

Находится по адресу http://www.lua.org/demo.html. На первых порах его может хватить, однако в дальнейшем, когда мы коснёмся модулей, вы будете вынуждены использовать оффлайн-версию. Пользоваться онлайн-интерпретатором очень просто: введите в окошко с текстом вашу программу и нажмите кнопку Run. Программа будет исполнена, в окошке Output покажется вывод вашей программы, а также отчёты об ошибках, если таковые были вами допущены.

3. Использовать IDE.

Например ZeroBrane Studio: http://studio.zerobrane.com/. Есть и другие — поищите в Интернете.

В ходу сейчас две несколько различающиеся версии Lua: 5.1 и 5.2. Я буду ориентироваться на самую последнюю версию — версию 5.2, но обязательно укажу на важные различия между ей и 5.1, так как последняя тоже достаточно распространена. Кстати, Lua 5.1 исполняет код в полтора раза быстрее, чем Lua 5.2, чтобы вы знали.

Источник

Оцените статью