Курс Raku / Об’єкти, введення-виведення та винятки / Введення та виведення / Запуск зовнішніх програм 🆕

run і shell

Є два способи запустити зовнішню програму. Функція run бере команду та її аргументи як окремі значення й виконує програму напряму, не залучаючи оболонки:

run 'echo', 'hello';

Це запускає програму echo з єдиним аргументом hello, що виводить hello. Оскільки аргументи передаються окремо, немає ризику, що оболонка неправильно витлумачить пробіли чи особливі символи, — run є безпечним вибором за замовчуванням.

Функція shell натомість передає один рядок системній оболонці, яка його тлумачить. Це дозволяє користуватися можливостями оболонки на кшталт каналів і перенаправлень:

shell 'echo hello | tr a-z A-Z';

Тут оболонка запускає echo, пропускає його вивід через tr і виводить HELLO. Ця зручність приходить із засторогою: оскільки оболонка розбирає рядок, будувати команду для shell із недовіреного вводу небезпечно. Віддавайте перевагу run, якщо вам не потрібні саме можливості оболонки.

Обидві повертають об’єкт Proc, який описує, як програма завершилася. За замовчуванням запущена програма ділить вивід із вашою програмою, тож те, що вона друкує, з’являється на екрані. Щоб натомість перехопити цей вивід, треба про це попросити, — це тема наступного розділу.

Практика

Виконайте 1 тест за змістом цієї теми.

Навігація курсом

Запуск зовнішніх програм 🆕   |   Тест — Запуск програм


💪 Або перейдіть одразу до вправ цього розділу.