Pageferry
Робочі процеси

Запуск скрипта Bash: від відкриття папки до коду виходу

03
Запустити скрипт

Запустіть скрипт Bash з аргументами в WSL або через SSH

Скрипт Bash можна запустити трьома способами: bash script.sh arg1 arg2, ./script.sh після chmod +x (це працює завдяки рядку shebang) або через вбудовану команду exec, яка замінює оболонку і ніколи не повертається. Перший варіант найпростіший для початку, оскільки не вимагає зміни прав доступу. Shell виконує команду в обраному середовищі — WSL на вашому ПК або Linux-системі, до якої ви підключилися через SSH, — а картка в чаті показує реальний вивід і код виходу. Ви самі визначаєте аргументи, тому можете протестувати штатний сценарій і варіант із помилкою в одному діалозі. Користувачі часто питають, який варіант обрати: використовуйте bash script.sh під час тестування, бо він працює навіть якщо файл не має права виконання, і перейдіть на ./script.sh, коли скрипт готовий і починається з рядка shebang. Незалежно від обраного варіанту, статус виходу — це одне й те саме число від 0 до 255, і 0 завжди означає, що скрипт завершився успішно.

01

Відкрийте папку

Оберіть папку зі скриптом як робочу; файлові інструменти, такі як read_file і grep, працюють у її межах. Файлові інструменти обмежені цією папкою, тоді як Shell, веб-інструменти та SSH мають доступ до ширшого середовища.

02

Виберіть режим затвердження

Використовуйте Ask first, щоб бачити кожну зміну як diff, або Plan only, щоб спочатку ознайомитися з планом. Auto-run діє миттєво. Ask first призупиняється лише перед діями, які змінюють стан системи.

03

Запитайте на запуск

Опишіть запуск простою мовою, наприклад: запустіть скрипт з аргументом test. Вкажіть WSL або ваш сервер, якщо у вас є обидва. Вкажіть назву скрипта та його аргументи точно.

04

Прочитайте результат

Відкрийте картку, щоб побачити вивід і реальний код виходу, потім прийміть або відхиліть будь-яку редакцію. Ненульове число — це інформація. Запустіть скрипт знову після кожного прийнятого редагування. Порівняйте його з очікуваним результатом.

Невеликий приклад скрипта

greet.sh
#!/usr/bin/env bash
# greet.sh - print a greeting a few times
set -eu
if [ "$#" -lt 1 ]; then
  echo "Usage: $0 NAME [COUNT]" >&2
  exit 2
fi
name="$1"
count="${2:-1}"
for i in $(seq 1 "$count"); do
  echo "Hello, $name ($i)"
done
exit 0

greet.sh завершується рядком використання та кодом виходу 2, коли ім'я відсутнє; приймає необов'язкову кількість з значенням за замовчуванням 1 і лише виводить привітання в циклі. Прочитайте його перед запуском: тут немає sudo, завантаження чи дій, які переміщують або видаляють файли, тому його безпечно тестувати на будь-якій машині, якою ви володієте. Рядок за рядком: shebang вказує інтерпретатор, set -eu зупиняється на помилках і неініціалізованих змінних, перевірка $# рахує аргументи, а цикл for лише виводить текст.

Запустіть скрипт за чотири невеликі кроки

Створіть файл скрипта

Почніть з порожньої робочої папки. Запитайте агента написати наведений вище приклад, і write_file створить greet.sh у цій папці. Відкрийте картку і прочитайте файл рядок за рядком: перший рядок — це shebang, який вказує інтерпретатор, set -eu зупиняє скрипт на помилках і неініціалізованих змінних, а перевірка $# захищає решту від відсутнього імені. За умови Ask first новий файл чекає на ваше схвалення, перш ніж буде записаний. Ще нічого не запущено. Гілка usage цього скрипта обирає 2 для неправильного використання, що є поширеною конвенцією. Прийміть файл лише тоді, коли розумієте кожен рядок, і якщо ні, попросіть агента пояснити його. Відхилене редагування залишає папку незмінною.

Запустіть його та прочитайте код виходу

Люди, які шукають «bash execute script», зазвичай хочуть одну команду: bash greet.sh test. Запитайте агента запустити його, і Shell виконає команду в середовищі вашого чату, наприклад WSL, і надішле реальний вивід і реальний код виходу. Розгорніть картку для повного виводу. Потім запитайте той самий запуск без аргументу, і ви повинні побачити рядок використання та код виходу 2. Код виходу для консольних додатків — це число від 0 до 255, яке читає викликувач, і 0 означає успіх. Код виходу 127 означає, що команду не знайдено, а 126 — що файл не можна виконати, тому ці два числа вказують на одрук, відсутню програму або відсутнє право виконання.

Прочитайте аргументи всередині скрипта

read_file показує скрипт, а grep знаходить, де використовуються $1 і $2, тому ви можете перевірити, чи має кожен аргумент значення за замовчуванням або повідомлення про помилку. Ось як парсити необов'язкові аргументи: скрипт циклічно обробляє getopts, і з лише одним або двома значеннями достатньо звичайних $1 та ${2:-1}. Аліаси з аргументами поводяться не як функції, тому що аліас лише замінює введене слово текстом, тому використовуйте функцію, коли значення мають бути в середині. Запитайте агента змінити одну річ, наприклад значення за замовчуванням для count, і прочитайте diff, який показує edit_file. Потім запустіть скрипт знову і порівняйте новий код виходу зі старим. Plan only може перелічити параметри, які розуміє скрипт, без запуску чогось.

Запустіть той самий скрипт на сервері, яким ви володієте

Ті самі кроки працюють, коли робоче середовище — це Linux-система, якою ви володієте, до якої ви підключилися через SSH. Файлові інструменти продовжують працювати у робочій папці чату, тоді як команди Shell виконуються в обраному середовищі, тому перевірте, на яку картку посилається повідомлення. Вбудована команда exec, яку люди шукають як «bash exec script», замінює оболонку іншою командою і ніколи не повертається, тому нічого після неї не виконується, а код виходу — це код нової команди. Збережіть копію перед тим, як скрипт перемістить або видалить файли, запустіть його спочатку з echo як dry run, і використовуйте лише машини, якими вам дозволено адмініструвати. Прочитайте фінальну картку перед тим, як закрити чат. Коли ви передаєте всі значення іншій команді, пишіть "$@" у подвійних лапках, щоб кожне значення зберегло свою форму.

Pageferry для Windows

Протестуйте скрипт Bash на власній машині

Завантажити Pageferry ↗