# Особливі змінні і вбудовані загальні змінні

Особливі функції — це функції, які обробляються &kommander;. Вам слід пам’ятати, що до того часу, доки у &kommander; не буде повного інструменту обробки, всі спеціальні функції &kommander; буде виконано спочатку, а вже потім буде виконано скрипт. У більшості випадків це не є проблемою, але іноді проблеми виникають.

`@dcop(`ідентифікатор програми`, `об’єкт`, `функція`, `параметри`)`

- Виконати виклик &DCOP;. @dcop(kmail, KMailIface, checkMail(), )

`@dcopid`

- Ідентифікатор &DCOP; процесу. (kmdr-executor-@pid)

`@dialog(`діалогове вікно`[,`параметри`])`

- Відкриває вказане діалогове вікно Kommander. Пошук діалогового вікна буде виконано у каталозі діалогових вікон, а потім у поточному каталозі, — саме у такому порядку. Цей пошук передує виклику інструменту виконання і встановлює значення типового каталогу у значення адреси каталогу, де знаходиться Kommander. Параметри може бути передано у звичайний для Unix спосіб або передано як іменовані параметри на зразок змінна=значення. Передані параметри потім можна знайти у глобальній динамічно розподіленій області. Функція @global(змінна) поверне значення.

`@env(`змінна середовища`)`

- Виводить повну назву вказаної змінної середовища. @env(PWD) виводить $PWD. Пам’ятайте, що $ є частиною оболонок, цю частину використовувати не слід.

`@exec(`команда`)`

- повертає дані, виведенні під час виконання вказаною командою. @exec(ls -l).

`@execBegin ... @execEnd`

- те саме, що і `@exec`, але з підтримкою послідовності символів «#!» і багаторядкових скриптів. Ця послідовність слугує для запису команд скриптових мов програмування шляхом декларування або за посередництва послідовності початку скрипту, «#!».

  - `@execBegin(php)`

  - `@execBegin`#!/usr/bin/php

  У першому з прикладів використано назву виконуваного файла PHP. &kommander; шукатиме за змінною PATH програму php, і якщо його не буде знайдено шукатиме, чи не зареєстровано &kommander; за адресою поза вказаними у змінній PATH. Якщо файл все ж не буде знайдено, програма повідомить про це користувачеві. У другому з прикладів використовується класична послідовність початку скрипту («#!»), і це може дати певні переваги, а також призвести до проблем. Наприклад, якщо у вашій системі встановлено бета-копію PHP5 у каталог `/usr/local/bin`, який не буде знайдено, оскільки пошук проводитиметься у каталозі `/usr/bin`, цей спосіб буде корисним. Якщо ж ви надасте створене діалогове вікно комусь, у кого PHP встановлено до `/usr/local/bin`, потрібну програму буде знайдено, якщо ви скористаєтеся варіантом з «#!». Отже вам слід уникати використання «#!» і використовувати назву виконуваного файла програми, якщо ви маєте намір поширювати файли скриптів.

`@global(`змінна`)`

- показує значення вказаної загальної змінної.

`@null`

- Повертає null. За використання цієї функції, під час перевірки Kommander того, чи порожнє значення widgetText, під час виконання повідомлення про неіснуючі помилки буде придушено у випадку невизначеного стану віджета.

`@parentPid`

- Ідентифікатор батьківського процесу.

`@pid`

- Ідентифікатор процесу.

`@readSetting(`ключ`, `типове значення`)`

- читає значення з `kommanderrc`

`@selectedWidgetText`

- виділений вміст у віджеті, який може мати декілька значень, наприклад у віджетах списків

`@setGlobal(`змінна`, `значення`)`

- Встановлює для загальної змінної вказане значення.

`@widgetText`

- вміст віджета

`@writeSetting(`ключ`, `значення`)`

- записує значення до `kommanderrc`

## Група функцій роботи з масивами

`@Array.values(`масив`)`

- Повертає відокремлений символами кінця рядка список всіх значень масиву. Отриманий результат можна використати для перегляду масиву.

`@Array.keys(`масив`)`

- Повертає список всіх ключів масиву, розділених між собою EOL (знаком кінця рядка).

`@Array.setValue(`масив`, `ключ`, `значення`)`

- Встановлює ключ і значення елемента масиву. Якщо масиву ще не існує, його буде створено.

`@Array.clear(`масив`)`

- Вилучає всі елементи з масиву.

`@Array.count(`масив`)`

- Повертає кількість елементів у масиві.

`@Array.value(`масив`,`ключ`)`

- Повертає значення, пов’язане з вказаним ключем.

`@Array.remove(`масив`,`ключ`)`

- Вилучити елемент з вказаним ключем з масиву.

`@Array.fromString(`масив`,`рядок`)`

- Додає всі елементи у рядку до масиву. Рядок має бути вказано у форматі key\tvalue\n format.

`@Array.toString(`масив`,`рядок`)`

- Повертає всі елементи у масиві у форматі key\tvalue\n.

## Група функцій, пов’язаних з роботою з файлами

`@File.read(`файл`)`

- Повертає вміст вказаного файла.

`@File.write(`файл``рядок`)`

- Записує вказаний рядок до файла.

`@File.append(`файл``рядок`)`

- Додає вказаний рядок в кінець вказаного файла.

## Група функцій, пов’язаних з роботою з рядками

`@String.length(`рядок`)`

- Повертає кількість символів у рядку.

`@String.contains(`рядок`,`підрядок`)`

- Перевіряє, чи міститься у рядку заданий підрядок.

`@String.find(`рядок`)`

- Повертає позицію підрядка у рядку, або -1, якщо підрядок не буде знайдено.

  Ця функція має додатковий цілочисельний параметр для наступного знайденого входження підрядка і використовується у Alpha 6.

`@String.left(`рядок`, `ціле число`)`

- Повертає перші «ціле число» символів рядка.

`@String.right(`рядок`, `ціле число`)`

- Повертає останні «ціле число» символів рядка.

`@String.mid(`рядок`, `початок (ціле число)`, `кінець (ціле число)`)`

- Повертає підрядок рядка, починаючи з вказаної позиції.

`@String.remove(`рядок`, `підрядок`)`

- Вилучає всі елементи, які збігаються з вказаним підрядком.

`@String.replace(`рядок`, `підрядок для пошуку`, `підрядок для заміни`)`

- Замінює всі елементи, що збігаються з вказаним підрядком, на вказаний рядок-замінник.

`@String.upper(`рядок`)`

- Перетворює символи рядка на символи верхнього регістру.

`@String.lower(`рядок`)`

- Перетворює символи рядка на символи нижнього регістру.

`@String.compare(`рядок`, `рядок`)`

- Порівнює два рядки. Повертає 0, якщо рядки рівні, -1, якщо перший з рядків менший, і 1, якщо перший з рядків більший.

`@String.isEmpty(`рядок`)`

- Перевіряє, чи є рядок порожнім.

`@String.isNumber(`рядок`)`

- Перевіряє, чи є рядок коректним записом числа.

## Вбудовані загальні змінні

Доступ до вбудованих загальних змінних можна здійснити так само, як для звичайних загальних змінних, за допомогою `@global`.

`@global(_KDDIR)`

- Каталог, у якому знаходиться поточне діалогове вікно.

`@global(_NAME)`

- Назва діалогового вікна.