🛠️ Что означает $@ в shell скрипте?
Если ты когда-либо задавался вопросом, что такое
то
Когда внутри
каждый параметр будет передан в
Пример использования:
Если ты вызовешь:
то
Использование
🌳 Ветка: https://stackoverflow.com/questions/9994295/what-does-mean-in-a-shell-script
📩 Завтра: Защити свой сервер: Настройка безопасности SSH на Linux
Включи 🔔 чтобы не пропустить!
____________________
Дополнительный материал:
🧠 - Текстовый редактор Nano — как работать с файлами на минималках и не страдать!
🧠 - Почувствуй себя цифровым рентгенологом — откроем файлы насквозь с Od!
🧠 - Давно занимался спортом? Нет? Ну вот, пора хотя бы пароли сменить!
#stackoverflow @LinuxSkill #Linux #ShellScripting #SysAdmin #DevOps
Если ты когда-либо задавался вопросом, что такое
$@ в shell скрипте, то сегодня мы разберем эту загадку и покажем, как использовать его для передачи параметров.$@ представляет собой все параметры, переданные скрипту. Например, если ты вызовешь скрипт так:./someScript.sh foo bar
то
$@ будет равно foo bar.Когда внутри
someScript.sh ты используешь:umbrella_corp_options "$@"
каждый параметр будет передан в
umbrella_corp_options в двойных кавычках. Это позволяет передавать параметры с пробелами, как единое целое.Пример использования:
Если ты вызовешь:
./someScript.sh foo bar "boo far"
то
$@ в двойных кавычках будет содержать три аргумента: "foo", "bar" и "boo far".Использование
$@ в shell скриптах позволяет легко и безопасно передавать параметры, включая те, которые содержат пробелы. Попробуй сам и убедись, насколько это удобно!🌳 Ветка: https://stackoverflow.com/questions/9994295/what-does-mean-in-a-shell-script
📩 Завтра: Защити свой сервер: Настройка безопасности SSH на Linux
Включи 🔔 чтобы не пропустить!
____________________
Дополнительный материал:
🧠 - Текстовый редактор Nano — как работать с файлами на минималках и не страдать!
🧠 - Почувствуй себя цифровым рентгенологом — откроем файлы насквозь с Od!
🧠 - Давно занимался спортом? Нет? Ну вот, пора хотя бы пароли сменить!
#stackoverflow @LinuxSkill #Linux #ShellScripting #SysAdmin #DevOps
Stack Overflow
What does $@ mean in a shell script?
What does a dollar sign followed by an at-sign (@) mean in a shell script?
For example:
umbrella_corp_options $@
For example:
umbrella_corp_options $@
👍18🔥2
🧠 Нужно ли ставить кавычки вокруг переменных в shell-скриптах?
Привет, повелитель терминала! Если ты в скриптах пишешь
Давай разберёмся, когда и зачем переменные в shell-скриптах нужно оборачивать в кавычки.
### Общее правило:
> Оборачивай переменные в двойные кавычки, если не хочешь сюрпризов от пробелов, пустых значений и спецсимволов.
---
### Когда кавычки обязательны:
1. Значение может быть пустым:
2. Есть пробелы:
3. В переменной спецсимволы (
---
### Пример бага:
---
### Когда кавычки можно опустить:
-
- Внутри арифметических или логических выражений:
Вывод:
Используй кавычки по умолчанию. Это просто и защищает от десятков потенциальных багов.
🌳 Ветка: https://stackoverflow.com/questions/10067266/when-to-wrap-quotes-around-a-shell-variable
📩 Завтра: Секреты Bash: Как тестировать порты без curl и wget!
Включи 🔔 чтобы не пропустить!
____________________
Дополнительный материал:
🧠 - Откройте для себя мир Управления Службами в Linux с нашей серией статей
🧠 - Контейнер в контейнере? Да это как матрёшка для айтишников: открываешь, а там ещё больше проблем… но зато все свои!
🧠 - Секретная Команда nsenter! Управляй Контейнерами как Хакер
#stackoverflow @LinuxSkill #Linux #ShellScripting #Quotes #SysAdmin #DevOps
Привет, повелитель терминала! Если ты в скриптах пишешь
$var без кавычек — скорее всего, ты (пока что) просто везучий. Давай разберёмся, когда и зачем переменные в shell-скриптах нужно оборачивать в кавычки.
### Общее правило:
> Оборачивай переменные в двойные кавычки, если не хочешь сюрпризов от пробелов, пустых значений и спецсимволов.
---
### Когда кавычки обязательны:
1. Значение может быть пустым:
[ "$var" = "value" ]
2. Есть пробелы:
xdg-open "$URL"
3. В переменной спецсимволы (
*, &, ?): wget "$link"
---
### Пример бага:
file="My documents/report.pdf"
rm $file # ❌ Попытка удалить два файла: 'My' и 'documents/report.pdf'
rm "$file" # ✅ Удаляется нужный файл
---
### Когда кавычки можно опустить:
-
$?, $#, $0 — безопасны без кавычек.- Внутри арифметических или логических выражений:
if [ "$?" -eq 0 ]; then ...
Вывод:
Используй кавычки по умолчанию. Это просто и защищает от десятков потенциальных багов.
🌳 Ветка: https://stackoverflow.com/questions/10067266/when-to-wrap-quotes-around-a-shell-variable
📩 Завтра: Секреты Bash: Как тестировать порты без curl и wget!
Включи 🔔 чтобы не пропустить!
____________________
Дополнительный материал:
🧠 - Откройте для себя мир Управления Службами в Linux с нашей серией статей
🧠 - Контейнер в контейнере? Да это как матрёшка для айтишников: открываешь, а там ещё больше проблем… но зато все свои!
🧠 - Секретная Команда nsenter! Управляй Контейнерами как Хакер
#stackoverflow @LinuxSkill #Linux #ShellScripting #Quotes #SysAdmin #DevOps
Stack Overflow
When to wrap quotes around a shell variable?
Should or should I not wrap quotes around variables in a shell script?
For example, is the following correct:
xdg-open $URL
[ $? -eq 2 ]
or
xdg-open "$URL"
[ "$?" -eq "2&q...
For example, is the following correct:
xdg-open $URL
[ $? -eq 2 ]
or
xdg-open "$URL"
[ "$?" -eq "2&q...
👍14
🚀 Как работает
Привет, архитектор переменных и властелин скриптов! Задумывался, зачем вообще нужен
🧠 Что делает
Когда ты пишешь:
ты говоришь bash: “Эй, сделай эту переменную доступной для всех дочерних процессов.”
Например, твой скрипт вызывает
🤔 А если без
Вот так:
Переменная будет доступна только внутри текущего shell, но не в дочерних процессах.
Однако есть лайфхак:
Так переменная временно экспортируется только для выполнения
⚠️ Важное ограничение
Экспорт работает вниз по процессу, но не вверх.
Если ты экспортируешь переменную в скрипте, родительский терминал её не увидит.
🛠 Вывод
Хочешь, чтобы переменная работала в дочерних процессах? Используй
Пишешь скрипт с вызовом других программ? Без
Но если переменная нужна только внутри текущего скрипта — не трать лишние байты.
🌳 Ветка: https://stackoverflow.com/questions/1158091/defining-a-variable-with-or-without-export
📩 Завтра: Прокачай свой namei: секретная опция для идеального вывода!
Включи 🔔 чтобы не пропустить!
____________________
Дополнительный материал:
🧠 - Поднимем отказоустойчивое хранилище в Proxmox VE с Ceph
🧠 - Отключи ненужные конфиги в Apache за пару команд!
🧠 - Контролируй трафик в реальном времени! Три утилиты для мониторинга сети в Linux
#stackoverflow @LinuxSkill #Linux #ShellScripting #Export #SysAdmin #DevOps
export в bash и когда он реально нужен?Привет, архитектор переменных и властелин скриптов! Задумывался, зачем вообще нужен
export в bash и что он делает с переменными? Сегодня разложим по полочкам — коротко, чётко и с пользой!🧠 Что делает
exportКогда ты пишешь:
export MY_VAR=value
ты говоришь bash: “Эй, сделай эту переменную доступной для всех дочерних процессов.”
Например, твой скрипт вызывает
python, curl, node — они смогут использовать MY_VAR.🤔 А если без
export?Вот так:
MY_VAR=value
Переменная будет доступна только внутри текущего shell, но не в дочерних процессах.
Однако есть лайфхак:
MY_VAR=hello node script.js
Так переменная временно экспортируется только для выполнения
node script.js. Удобно? Да!⚠️ Важное ограничение
Экспорт работает вниз по процессу, но не вверх.
Если ты экспортируешь переменную в скрипте, родительский терминал её не увидит.
🛠 Вывод
Хочешь, чтобы переменная работала в дочерних процессах? Используй
export. Пишешь скрипт с вызовом других программ? Без
export будет больно. Но если переменная нужна только внутри текущего скрипта — не трать лишние байты.
🌳 Ветка: https://stackoverflow.com/questions/1158091/defining-a-variable-with-or-without-export
📩 Завтра: Прокачай свой namei: секретная опция для идеального вывода!
Включи 🔔 чтобы не пропустить!
____________________
Дополнительный материал:
🧠 - Поднимем отказоустойчивое хранилище в Proxmox VE с Ceph
🧠 - Отключи ненужные конфиги в Apache за пару команд!
🧠 - Контролируй трафик в реальном времени! Три утилиты для мониторинга сети в Linux
#stackoverflow @LinuxSkill #Linux #ShellScripting #Export #SysAdmin #DevOps
Stack Overflow
Defining a variable with or without export
What is export for?
What is the difference between:
export name=value
and
name=value
What is the difference between:
export name=value
and
name=value
👍20🔥1
🤔 Как запросить ввод Yes/No/Cancel в shell скрипте?
Хочешь сделать свои скрипты более интерактивными? Узнай, как легко запросить ввод от пользователя в Linux с помощью команд read и select.
Основная информация:
1. Использование команды read:
Команда read позволяет запрашивать ввод от пользователя. Вот пример, как это сделать:
Этот скрипт будет повторять запрос, пока пользователь не введет "yes" или "no".
2. Использование команды select:
select упрощает выбор, автоматически отображая доступные варианты:
Здесь пользователь выбирает номер, соответствующий его выбору.
3. Локализация ввода:
Для поддержки разных языков можно использовать locale:
Используя команды read и select, ты можешь сделать свои скрипты более интерактивными и удобными для пользователей. Попробуй сам и убедись в их эффективности!
🌳 Ветка: https://stackoverflow.com/questions/226703/how-do-i-prompt-for-yes-no-cancel-input-in-a-linux-shell-script
📩 Завтра: Топ команды для DevOps: Что спрашивают на собеседованиях
Включи 🔔 чтобы не пропустить!
____________________
Дополнительный материал:
🧠 - Секреты массового управления пользователями и группами в Linux
🧠 - Не трать время на логи! Вот как найти все медленные запросы за 1 минуту
🧠 - Как ускорить MySQL? Простые советы, чтобы твой сервер летал, как на стероидах
#stackoverflow @LinuxSkill #Linux #ShellScripting #UserInput #SysAdmin #DevOps
Хочешь сделать свои скрипты более интерактивными? Узнай, как легко запросить ввод от пользователя в Linux с помощью команд read и select.
Основная информация:
1. Использование команды read:
Команда read позволяет запрашивать ввод от пользователя. Вот пример, как это сделать:
while true; do
read -p "Do you wish to install this program? " yn
case $yn in
[Yy]* ) make install; break;;
[Nn]* ) exit;;
* ) echo "Please answer yes or no.";;
esac
done
Этот скрипт будет повторять запрос, пока пользователь не введет "yes" или "no".
2. Использование команды select:
select упрощает выбор, автоматически отображая доступные варианты:
echo "Do you wish to install this program?"
select yn in "Yes" "No"; do
case $yn in
Yes ) make install; break;;
No ) exit;;
esac
done
Здесь пользователь выбирает номер, соответствующий его выбору.
3. Локализация ввода:
Для поддержки разных языков можно использовать locale:
set -- $(locale LC_MESSAGES)
yesexpr="$1"; noexpr="$2"; yesword="$3"; noword="$4"
while true; do
read -p "Install (${yesword} / ${noword})? " yn
if [[ "$yn" =~ $yesexpr ]]; then make install; exit; fi
if [[ "$yn" =~ $noexpr ]]; then exit; fi
echo "Answer ${yesword} / ${noword}."
done
Используя команды read и select, ты можешь сделать свои скрипты более интерактивными и удобными для пользователей. Попробуй сам и убедись в их эффективности!
🌳 Ветка: https://stackoverflow.com/questions/226703/how-do-i-prompt-for-yes-no-cancel-input-in-a-linux-shell-script
📩 Завтра: Топ команды для DevOps: Что спрашивают на собеседованиях
Включи 🔔 чтобы не пропустить!
____________________
Дополнительный материал:
🧠 - Секреты массового управления пользователями и группами в Linux
🧠 - Не трать время на логи! Вот как найти все медленные запросы за 1 минуту
🧠 - Как ускорить MySQL? Простые советы, чтобы твой сервер летал, как на стероидах
#stackoverflow @LinuxSkill #Linux #ShellScripting #UserInput #SysAdmin #DevOps
Stack Overflow
How do I prompt for Yes/No/Cancel input in a Linux shell script?
I want to pause input in a shell script, and prompt the user for choices.
The standard Yes, No, or Cancel type question.
How do I accomplish this in a typical bash prompt?
The standard Yes, No, or Cancel type question.
How do I accomplish this in a typical bash prompt?
👍16
🧨 Твои скрипты падают на проде? 43 команды Bash, которые спасут твою репутацию
❗️ ❗️ ❗️ Нравится формат? Ставь 👍
👉 Рубрика: #шпаргалка@LinuxSkill
⭐️ Зеркало в MAX
#Linux #Bash #DevOps #Sysadmin #ShellScripting #CLI
Скрипт отработал с ошибкой, но не остановился и удалил половину нужных файлов? Или CI/CD пайплайн споткнулся о пустую переменную? Я отжал воду из огромных справочников и оставил ровно 50 самых хардкорных и важных конструкций Bash, которые жизненно необходимы.
1. Безопасность и запуск (Strict Mode)Эти настройки — стандарт де-факто для любых production-скриптов. Они отлавливают ошибки на раннем этапе.
# Указать интерпретатор (лучшая практика переносимости)
#!/usr/bin/env bash
# Сделать скрипт исполняемым
chmod +x script.sh
# "Strict Mode" (выход при ошибке, ошибке переменной или в пайплайне)
set -euo pipefail
# Выйти немедленно при ошибке
set -e
# Режим отладки (выводить команды перед выполнением)
set -x
2. Продвинутая работа с переменнымиЗащита от пустых значений, которые могут сломать автоматизацию.
# Присвоить значение (строго без пробелов вокруг =)
VAR=value
# Безопасное чтение с кавычками (предотвращает word splitting)
"$VAR"
# Использовать по умолчанию, если переменная не задана (важно для Docker)
${VAR:-default}
# Назначить значение по умолчанию, если VAR не задана
${VAR:=default}
# Выйти с ошибкой, если переменная не задана (failsafe для деплоя)
${VAR:?error msg}
# Сделать переменную доступной только для чтения (константа)
readonly VAR
# Экспортировать переменную для дочерних процессов
export VAR
3. Системные переменныеИдентификаторы процессов и аргументы функций.
# Имя скрипта
$0
# Позиционные параметры (аргументы 1-9)
$1..$9
# Количество переданных аргументов
$#
# Все аргументы безопасно как отдельные слова
$@
# Статус выхода последней команды (0 - успех, иное - ошибка)
$?
# PID текущего процесса shell
$$
4. Парсинг строк (без вызова awk/sed)Молниеносные встроенные манипуляции с путями и текстом.
# Удалить самое короткое совпадение паттерна с начала
${VAR#pattern}
# Удалить самое короткое совпадение с конца (удобно для расширений файлов)
${VAR%pattern}
# Заменить все вхождения подстроки
${VAR//old/new}
# Перевести все символы в нижний регистр
${VAR,,}
5. Условия и мощные проверкиИспользуй `[[ ]]` вместо старого `[ ]` — это безопаснее и поддерживает регулярные выражения.
# Проверить существование файла и вывести результат
if [[ -f "file.txt" ]]; then echo "exists"; fi
# Проверка по регулярному выражению
=~
# Конструкция case (идеально для стартовых скриптов systemd)
case "$1" in start) echo "Starting";; stop) echo "Stopping";; *) echo "Usage: $0 {start|stop}";; esac
# Файл существует и является обычным
-f file
# Файл существует и является директорией
-d file
# Строка пустая
-z string
# Строка не пустая
-n string
# Строковое равенство и неравенство
==
!=
# Числовое равенство и неравенство
-eq
-ne
6. Массивы и словариНезаменимо для перебора IP-адресов, списков серверов и портов.
# Объявить индексированный массив
arr=(a b c)
# Получить все элементы массива
${arr[@]}
# Узнать количество элементов в массиве
${#arr[@]}
# Объявить ассоциативный массив (словарь)
declare -A map
# Добавить значение по ключу
map[key]="value"
7. Математика, Ввод/Вывод и СигналыФорматирование вывода для дашбордов и правильная очистка мусора за скриптом.
# Арифметика: сложение
$((a + b))
# Арифметическое присваивание
let "a += 5"
# Прочитать строку в массив
read -r -a items <<< "a b c"
# Форматированный вывод (надежнее чем echo)
printf "Name: %s, Age: %d\n" "$name" "$age"
# Многострочный ввод (Here document) для генерации конфигов
cat <<EOF
Lines of text go here.
Variables like $HOME are expanded.
$ EOF
# Завершить скрипт с кодом успеха
exit 0
# Завершить скрипт с кодом ошибки
exit 1
# Выполнить очистку (например, удалить лок-файл) при любом выходе
trap ' rm -f /tmp/mylock' EXIT
Теперь твой код готов к нагрузкам. Сохраняй шпаргалку, чтобы не плодить костыли, и применяй правильный синтаксис!
👉 Рубрика: #шпаргалка@LinuxSkill
⭐️ Зеркало в MAX
#Linux #Bash #DevOps #Sysadmin #ShellScripting #CLI
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12