Процесс

Здесь описаны операторы и функции для работы с процессами и приложениями. Функции Args и ArgCount работают с командной строкой любого формата. Для корректной работы остальных Arg.. функций необходимо, чтобы командная строка имела следующий формат.

CmdLine = [ CmdOptions ] ["-"] [ CmdParameters ]
CmdParameters = { CmdParameter }
CmdParameter = ParamWithoutSpace | "Param With Spaces" | 'Param With Spaces'
CmdOptions = {CmdOption}
CmdOption = "-" | "--" {letter} [ CmdOptionValue | CmdOptionValues ]
CmdOptionValue = "=" | ":" CmdParameter
CmdOptionValues = " " CmdParameters
-p="my value" --flag - one two three
-i:10 -n:Bob "one par" two three
--ext "*.txt" .js .html -o=/home/ak/dest /home/ak/in1 /home/ak/in2

Операторы

Функции

Arg(str name) str

Функция Arg возвращает значение параметра с указанным именем. Если параметр не был указан при запуске скрипта, то возвратится пустая строка. В имени параметра можно не указывать начальный символ -.

Arg(str name, str def) str

Функция Arg возвращает значение параметра с указанным именем name. Если параметр не был указан при запуске скрипта, то возвратится значение def. В имени параметра можно не указывать начальный символ -.

Arg(str name, int def) int

Функция Arg возвращает числовое значение параметра с указанным именем name. Если параметр не был указан при запуске скрипта, то возвратится число def. В имени параметра можно не указывать начальный символ -.

ArgCount() int

Функция ArgCount возвращает количество параметров командной строки с которыми был запущен скрипт.

Args() arr.str

Функция Args возвращает список всех параметров и опций командной строки с которыми был запущен скрипт.

Args(str name) arr.str

Функция Args возвращает список значений параметра с именем name. В имени параметра можно не указывать начальный символ -.

// --ext .txt .js .html -o=/home/ak/dest /home/ak/in1 /home/ak/in2
list = Args(`--ext`) 
// list == [.txt, .js, .html]

ArgsTail() arr.str

Функция ArgsTail возвращает список параметров командной строки после опций. Можно явно указать начало таких параметров с помощью -.

// --ext .txt .js .html -o=/home/ak/dest /home/ak/in1 /home/ak/in2
list = ArgsTail() // list == [/home/ak/in1, /home/ak/in2]

// -i=false - val0 -value1 "value 2" 
list = ArgsTail() // list == [val0, -value1, value 2]

IsArg(str name) bool

Функция IsArg возвращает true, если в командной строке имеется опция с указанным именем. В противном случае, возвращается false. В имени параметра можно не указывать начальный символ -.

Open(str path)

Функция Open открывает файл, директорию или URI адрес приложением по умолчанию для объектов данного типа. Скрипт не ожидает завершения работы.

OpenWith(str app, str path)

Функция OpenWith открывает файл, директорию или URI адрес в указанном приложении. Скрипт не ожидает завершения работы.

Run(str cmd, str params...)

Опциональные параметры

  • buf stdin - буфер, который будет передан приложению как стандартный ввод.

  • buf stdout - буфер, в который будет записан стандартный вывод приложения.

  • buf stderr - буфер, в который будет записан стандартный вывод ошибок приложения.

Функция Run запуcкает указанную программу cmd c параметрами и ожидает её окончание. Дополнительно, вы можете переопределить стандартный ввод и вывод.

    buf dirout
    Run("dir", stdout: dirout)
    Run("bash", stdin: buf(
      |`echo "dirs"
        #comment    
        echo "%{str(dirout)}"`
    ))

SplitCmdLine(str cmdline) arr.str

Функция SplitCmdLine разбирает входящую строку с параметрами командной строки и возвращает массив параметров.

run str {
    return SplitCmdLine(`param1 "second par" "qwert\"y" 100 'oo ps'
-lastparam`).Join(`=`)
}
// returns param1=second par=qwert"y=100=oo ps=-lastparam

Start(str cmd, str params...)

Опциональные параметры

  • buf stdin - буфер, который будет передан приложению как стандартный ввод.

Функция Start запуcкает указанную программу cmd c параметрами и выполняет скрипт дальше. Дополнительно, вы можете передать буфер в качестве стандартного ввода.

    Start("echo", "hello, world!")
    Start("bash", stdin: buf(
      |`./myscript1.sh
        ./myscript2.sh`
    ))

Last updated