Функции и аргументы в сценариях оболочки
Организуйте сценарии с помощью повторно используемых функций, передавайте аргументы, возвращайте значения и разберитесь с областью действия переменных в Bash.
«Функции и аргументы в сценариях оболочки» — бесплатный урок Linux Command Line Mastery на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Linux Command Line Mastery, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Linux Command Line Mastery содержит 4 уроков всего.
Части этого урока еще не переведены и отображаются на английском.
Why Functions?
You can write variables, conditionals, and loops, but as scripts grow they get repetitive. Functions let you name a block of logic and reuse it, keeping scripts clean and testable.
Defining a Function
A Bash function is a name followed by () and a body in braces. Define it before you call it.
greet() {
echo 'Hello from a function'
}
greetPassing Arguments
Functions receive arguments positionally: $1, $2, and so on. Just like the whole script does.
greet() {
echo "Hello, $1"
}
greet AliceAll Arguments at Once
$@ expands to all arguments and $# gives their count, handy for variadic helpers.
show() {
echo "count: $#"
for a in "$@"; do echo "arg: $a"; done
}
show one two threeReturn Status Codes
return sets an exit status (0-255), where 0 means success. Check it with $?.
is_even() {
if [ $(( $1 % 2 )) -eq 0 ]; then return 0; else return 1; fi
}
is_even 4 && echo evenReturning Real Values
Since return only gives a status, output data with echo and capture it via command substitution.
square() {
echo $(( $1 * $1 ))
}
result=$(square 5)
echo "result is $result"Local Variables
By default Bash variables are global. Use local inside functions to avoid clobbering outer variables.
calc() {
local total=0
for n in "$@"; do total=$(( total + n )); done
echo $total
}
calc 1 2 3 4Functions Calling Functions
Functions can call each other, letting you compose small pieces into larger behavior.
double() { echo $(( $1 * 2 )); }
quad() { double $(double $1); }
quad 3Default Argument Values
Use parameter expansion to supply a fallback when an argument is missing.
greet() {
local name=${1:-World}
echo "Hello, $name"
}
greetA Practical Helper
Functions shine for reusable utilities like logging with a timestamp prefix.
log() {
echo "[INFO] $*"
}
log 'Backup started'
log 'Backup finished'Organizing Scripts
A clean pattern: define all functions at the top, then a main function at the bottom that orchestrates them. This mirrors structured programming.
main() {
echo 'Running main'
}
main "$@"Quick Check
How do you reliably get a computed value back from a Bash function?
Recap
Functions make scripts modular:
- Define with
name() { ... } - Arguments are
$1,$@,$# return= status;echo+$()= valueslocalkeeps variables scoped
Compose small functions and orchestrate them from main.
Часто задаваемые вопросы
Урок «Функции и аргументы в сценариях оболочки» бесплатный?
Да — полный текст урока «Функции и аргументы в сценариях оболочки» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Linux Command Line Mastery, подпишись на CoddyKit PRO. Курс Linux Command Line Mastery содержит 4 уроков всего.
Чему я научусь в уроке «Функции и аргументы в сценариях оболочки»?
Организуйте сценарии с помощью повторно используемых функций, передавайте аргументы, возвращайте значения и разберитесь с областью действия переменных в Bash. Ты практикуешь Linux Command Line Mastery с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Linux Command Line Mastery?
Предыдущий опыт не требуется. Linux Command Line Mastery на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.
Сколько времени занимает урок «Функции и аргументы в сценариях оболочки»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Linux Command Line Mastery?
Да. Каждый урок Linux Command Line Mastery включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Переменные, ввод и вывод
- Условные конструкции: `if`, `else`, `case`
- Циклы: `for`, `while`, `until`
- Функции и аргументы в сценариях оболочки