Відкрийте папку
Оберіть папку зі скриптом як робочу; файлові інструменти, такі як read_file і grep, працюють у її межах. Файлові інструменти обмежені цією папкою, тоді як Shell, веб-інструменти та 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 завжди означає, що скрипт завершився успішно.
Оберіть папку зі скриптом як робочу; файлові інструменти, такі як read_file і grep, працюють у її межах. Файлові інструменти обмежені цією папкою, тоді як Shell, веб-інструменти та SSH мають доступ до ширшого середовища.
Використовуйте Ask first, щоб бачити кожну зміну як diff, або Plan only, щоб спочатку ознайомитися з планом. Auto-run діє миттєво. Ask first призупиняється лише перед діями, які змінюють стан системи.
Опишіть запуск простою мовою, наприклад: запустіть скрипт з аргументом test. Вкажіть WSL або ваш сервер, якщо у вас є обидва. Вкажіть назву скрипта та його аргументи точно.
Відкрийте картку, щоб побачити вивід і реальний код виходу, потім прийміть або відхиліть будь-яку редакцію. Ненульове число — це інформація. Запустіть скрипт знову після кожного прийнятого редагування. Порівняйте його з очікуваним результатом.
bash greet.sh testexit 0bash greet.shexit 2greet.shreadUsage1 match#!/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 0greet.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, і використовуйте лише машини, якими вам дозволено адмініструвати. Прочитайте фінальну картку перед тим, як закрити чат. Коли ви передаєте всі значення іншій команді, пишіть "$@" у подвійних лапках, щоб кожне значення зберегло свою форму.