Це команда dacsexpr, яку можна запустити в постачальнику безкоштовного хостингу OnWorks за допомогою однієї з наших численних безкоштовних робочих станцій, таких як Ubuntu Online, Fedora Online, онлайн-емулятор Windows або онлайн-емулятор MAC OS
ПРОГРАМА:
ІМ'Я
dacsexpr - DACS мовна оболонка виразів і інтерпретатор
СИНТАКСИС
dacsexpr [-x] [dacsoptions[1]] [Містер] [-e експр] [-n] [-p] [-s] [-h | -допомога] [-тест]
[--] [ім'я файлу] [скрипт-арг...]
ОПИС
Ця програма є частиною DACS на.
Команда dacsexpr корисність оцінює DACS вирази (див dacs.exprs(5)[2]). Часто це а
корисна допомога при складанні або тестуванні виразів, які будуть використовуватися в правилах контролю доступу, або
під час налагодження списків керування доступом та директив конфігурації. Поки їх продовжують називати
«виразів» з історичних причин стало можливим писати невеликі програми, і
мова також може бути корисною як проста мова сценаріїв незалежно від решти
DACS.
Якщо надано вираз, він оцінюється, а результат друкується за стандартом
вихід. Можна вказати не більше одного виразу. Якщо -q дається прапор (один з
dacsoptions[1]), нічого не друкується, помилки оцінки виразів приховуються, і
програма завершується відповідним вихід статус[3]; інакше результат записується
стандартний вихід. Якщо ні а -q прапор не дається, ані будь-який прапорець, який контролює ведення журналу
рівень, тоді рівень ведення журналу встановлюється на попередження, що замінює будь-який журнал конфігурації
директива рівня; така поведінка зазвичай зручна.
Якщо вираз не надано, програма зчитує свій стандартний вхід. Якщо вхід не є
виходячи з пристрою термінального типу, програма працює в «пакетному режимі», а підказка є
придушений; в іншому випадку програма працює в «інтерактивному режимі». Коли буде запропоновано ввійти
інтерактивний режим, введіть допомога за допомогу. Якщо читальна лінія(3)[4] функціональність була
налаштовані під час створення програми, доступні редагування командного рядка та історія
інтерактивний режим.
Якщо програма виконується через системний "#!" механізм, один або кілька командних рядків
можна навести аргументи:
#!/usr/local/dacs/bin/dacsexpr -test
// очікувати-точно:17
${x} = 17;
Такі програми завжди використовують файл сценарію як вхідні дані, отже, немає виразів чи інших файлів
можна вказати на "#!" лінія.
Команда Окр простір імен ініціалізується з середовища програми. Наприклад, якщо значення
змінної середовища LOGNAME то бобо ${Env::LOGNAME} буде створено
з цим значенням. Синтаксично недійсні імена змінних мовчки ігноруються.
Примітка:
Директиви конфігурації та Конф Простір імен змінних доступний лише за умови a
файл конфігурації обробляється (наприклад, шляхом надання -uj прапор командного рядка). Це
актуально, наприклад, якщо http()Функція [5] викликається за схемою https
тому що для належної експлуатації знадобиться SSL_PROG[6] директива, яку потрібно налаштувати. Побачити
dacs.conf(5)[7].
ВАРІАНТИ
Якщо вираз або файл ще не вказано, ім’я файлу може відображатися як останній
аргумент. Якщо ім'я файлу є "-", стандартний вхід зчитується.
Містер
Друк налагоджувальної інформації на stderr.
-e експр
Даний вираз обчислюється.
-h
-допомога
Відобразити довідкове повідомлення та вийти.
-n
Не оцінюйте жодних виразів, перевіряйте лише синтаксичні помилки.
-p
Роздрукуйте кінцевий результат у стандартному виводі, якщо він не був придушений -q or
-n. Без цього прапора програма мала б виводити результат.
-s
Якщо один вираз оцінюється з командного рядка або файлу, то
результатом оцінювання є рядок або bstring, вихід буде оточений лапками
якщо цей прапор не вказано.
-тест
Вхідним є тестовий приклад. Тестовий приклад складається з параметрів, за якими слідує вираз.
Може бути нуль або більше параметрів, по одному на рядок, вбудованих у // стиль коментаря:
{ пробіл* "//" пробіл* ім'я параметра «» значення параметра кінець рядка }*
Пробіли перед або після ":" не допускаються. Як окремий випадок, рядки, що мають
наступний формат ігнорується:
пробіл* "///" .* кінець рядка
Перший рядок без параметрів завершує опції і є першим рядком
вираз, який потрібно оцінити.
Ось приклад:
/// Перевірка побітового зсуву
// очікувати-точно:1024
1 << 10
Опція контролює, як має виконуватися тест, і дає очікуваний результат:
очікувати:regex
очікування-регулярний вираз:regex
Рядок результату повинен збігатися regex. Ці дві назви варіантів є еквівалентними.
очікувати-ідентичне:рядок
Рядок результату повинен збігатися рядок точно.
очікувати точно:рядок
Рядок результату повинен збігатися рядок точно, за винятком символу в стилі C
константи (перед яких стоїть зворотна коса риса) в рядок інтерполюються.
код очікування:код
Код результату має збігатися код, що дорівнює 0, якщо результат є Правда, 1, якщо результат
is Помилковий, і 2, якщо сталася помилка. Якщо цей параметр не вказано, код за замовчуванням
0 передбачається.
тип очікування:тип
Тип результату повинен збігатися тип, який може бути цілим, дійсним, рядковим,
bstring, literal або undef.
прапори очікування:прапори
Наразі єдині визнані значення для прапори є rw_namespaces і
ro_namespaces. Перший дозволяє тесту створювати або змінювати змінні в
DACS, Аргументиабо Окр простір імен; за замовчуванням ці простори імен доступні лише для читання. Це
може бути корисним при тестуванні від()[8], наприклад, тому що це дозволяє тест
щоб встановити значення для ${DACS::REMOTE_ADDR}. Поведінка за замовчуванням може бути явною
вибрано, вказавши ro_namespaces.
show-result:{yes | немає}
Результат друкується на стандартному виводі, лише якщо значення параметра є так.
Якщо тест не пройшов, описове повідомлення друкується зі стандартною помилкою. The
статус завершення програми буде 0, якщо тест пройшов успішно, 1 в іншому випадку.
Цей приклад має бути успішним без відображення результату:
// очікувати-точно:2
// очікування-тип:ціле число
/// show-result:yes
1 + 1
Примітка:
Команда DACS дистрибутив містить набір тестів у каталозі src/tests, що
можна запустити для регресійного тестування (виконувати тести з каталогу src). Дещо
функцій, передбачених dacs.exprs(5)[2] також використовуються внутрішньо DACS, так
Важливо, щоб усі тести були успішними навіть для функцій, які не використовуються
з рівня користувача.
-x
Якщо це перший прапор, це вказує на це dacsexpr виконується як a
скрипт за допомогою системного "#!" механізм. Це може бути корисно, якщо програма
евристичний для визначення цього є неправильним. Останнім аргументом має бути ім’я файлу.
--
Цей аргумент явно позначає останній аргумент прапорця. Аргумент імені файлу може
слідуйте.
ПРИКЛАДИ
Наступна команда оцінює аргумент виразу (зверніть увагу, що це один аргумент
до команди) і виводить результат у стандартний вихід:
% dacsexpr -e "1+1"
2
% dacsexpr -e '${Env::USER}'
"бобо"
% dacsexpr -u example.com -e '"FEDERATION_NAME=" . ${Conf::FEDERATION_NAME}'
"FEDERATION_NAME=ПРИКЛАД"
% dacsexpr - abc <
? print("Перший аргумент \"\${Argv::1}\"")
? ТУТ
Перший аргумент - "a"
% кіт впр
#!/usr/local/dacs/bin/dacsexpr
print("Argv[2] є ${Argv::2}");
% chmod 0755 пр
% ./ex foo bar baz
Argv[2] — так
ДІАГНОСТИКА
Якщо виникає помилка, повідомлення може бути записано в stderr, залежно від рівня реєстрації. в
загалом, програма виходить з 0 тоді і тільки тоді, коли все було добре. Якщо командний рядок
Вираз обчислюється, програма виходить із 0, якщо вираз має значення Правда, 1 якщо це
оцінює до Помилковий, і 2, якщо сталася помилка. Якщо явний заклик до вихід () зроблено і ні
сталася умова справжньої помилки, тоді програма завершить роботу зі значенням аргументу.
Використовуйте dacsexpr онлайн за допомогою служб onworks.net