2.6 Выполняемые программы Octave
После изучения Octave, вы можете захотеть написать автономные скрипты Octave, используя механизм скрипта ‘#!’. Вы можете сделать это в системах GNU и во многих системах Unix 1.
Автономные скрипты Octave полезны, когда вы хотите написать программу, которую пользователи могут вызывать, не зная, что программа написана на языке Octave. Скрипты Octave также используются для пакетной обработки файлов данных. После того, как алгоритм был разработан и протестирован в интерактивной части Octave, его можно зафиксировать в исполняемом скрипте и использовать повторно для новых файлов данных.
В качестве тривиального примера исполняемого скрипта Octave вы можете создать текстовый файл с именем hello, содержащий следующие строки:
#! octave-interpreter-name -qf
# a sample Octave program
printf ("Hello, world!\n"); (где octave-interpreter-name следует заменить полным путем и именем вашего двоичного файла Octave). Обратите внимание, что это сработает только в том случае, если ‘#!’ находится в самом начале файла. После того, как вы сделаете файл исполняемым (с помощью команды chmod в системах Unix), вы можете просто ввести:
hello
в командной строке, и система организует запуск Octave так, как если бы вы ввели:
octave hello
Строка, начинающаяся с ‘#!’, указывает полный путь и имя интерпретатора, который будет запущен, и необязательный начальный аргумент командной строки для передачи этому интерпретатору. Затем операционная система запускает интерпретатор с заданным аргументом и полным списком аргументов исполняемой программы. Первым аргументом в списке является полное имя исполняемого файла Octave. Остальная часть списка аргументов будет либо параметрами Octave, либо файлами данных, либо тем и другим. Параметры ‘-qf’ обычно указываются в автономных программах Octave, чтобы предотвратить вывод обычного сообщения о запуске и предотвратить их различное поведение в зависимости от содержимого файла ~/.octaverc конкретного пользователя. См. Вызов Octave из командной строки.
Обратите внимание, что некоторые операционные системы могут ограничивать количество символов, распознаваемых после ‘#!’. Кроме того, аргументы, присутствующие в строке ‘#!’, анализируются различными оболочками/системами по-разному. Большинство из них объединяют все аргументы вместе в одной строке и передают ее интерпретатору как один аргумент. В этом случае следующий скрипт:
#! octave-interpreter-name -q -f # comment
эквивалентен вводу в командной строке:
octave "-q -f # comment"
что приведет к сообщению об ошибке. К сожалению, Octave не может определить, был ли он вызван из командной строки или из скрипта ‘#!’, поэтому при использовании механизма ‘#!’ необходима определенная осторожность.
Обратите внимание, что когда Octave запускается из исполняемого скрипта, встроенная функция argv возвращает ячейку, содержащую аргументы командной строки, переданные исполняемому скрипту Octave, а не аргументы, переданные интерпретатору Octave в строке ‘#!’ скрипта. Например, следующая программа воспроизведет командную строку, которая была использована для выполнения скрипта, а не ‘-qf’.
#! /bin/octave -qf
printf ("%s", program_name ());
arg_list = argv ();
for i = 1:nargin
printf (" %s", arg_list{i});
endfor
printf ("\n"); Примечания
(1)
Механизм ‘#!’ работает в системах Unix, полученных от Berkeley Unix, System V Release 4 и некоторых системах System V Release 3.
© 1996–2022 The Octave Project Developers
Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies.
Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one.Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions.
https://docs.octave.org/v5.2.0/Executable-Octave-Programs.html