Курс по 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 тест върху съдържанието на тази тема.

Навигация в курса

Стартиране на външни програми 🆕   |   Тест — Стартиране на програми


💪 Или преминете направо към упражненията в този раздел.