TGStat
TGStat
Qidiruv uchun matnni kiriting
Ilg‘or kanal qidiruvi
  • flag Uzbek
    Sayt tili
    flag Russian flag English flag Uzbek
  • Saytga kirish
  • Katalog
    Kanal va guruhlar katalogi Hududiy to‘plamlar Tematik to‘plamlar Платные каналы Kanallar qidiruvi
    Kanal/guruh qo‘shish
  • Reytinglar
    Kanallar reytingi Guruhlar reytingi Postlar reytingi
    Brendlar va shaxslar reytingi
  • Analitika
  • Postlarda qidiruv
  • Telegram'ni kuzatish
  • Targ‘ibot
    Yandex Business orqali reklama Реклама в каналах через TGStat Agency Реклама на сайте TGStat.ru
BashTex | Linux

18 Aug, 16:56

Telegram'da ochish Ulashish Shikoyat qilish

return против exit: как не завершить весь скрипт внутри функции

В Bash функция может вернуть управление вызывающему коду или полностью завершить текущий shell. Эти два случая часто путают.

▪️exit завершает весь скрипт

check_config() {
if [ ! -f config.conf ]; then
echo "Config not found"
exit 1
fi
}

check_config

echo "Продолжаем работу"

Если config.conf нет, выполнение закончится прямо внутри функции. Строка Продолжаем работу никогда не выполнится.

▪️return завершает только функцию

check_config() {
if [ ! -f config.conf ]; then
echo "Config not found"
return 1
fi
}

check_config

echo "Продолжаем работу"

Теперь функция завершилась с кодом 1, но сам скрипт продолжил выполнение.

Именно поэтому return обычно используют внутри функций, а exit - на уровне самого скрипта.

▪️Код возврата можно обработать

if check_config; then
echo "Config OK"
else
echo "Config error"
fi

Или сохранить результат:

check_config
status=$?

if [ "$status" -ne 0 ]; then
echo "Ошибка: $status"
fi

▪️Важный нюанс

return можно использовать только внутри функции или в контексте, где Bash допускает возврат из текущего sourced-файла.

Например:

return 1

в обычном запускаемом скрипте верхнего уровня приведёт к ошибке:

return: can only `return' from a function

▪️Типичная ошибка

deploy() {
check_config || exit 1
start_service
}

Если deploy вызывается из другого скрипта как функция, exit завершит уже весь shell.

Чаще правильнее:

deploy() {
check_config || return 1
start_service
}

А решение о завершении оставить вызывающему коду:

deploy || exit 1

Так функция сообщает об ошибке, а не решает за весь скрипт, что делать дальше.

BashTex 📱 #bash #linux

305 0 15 3
Katalog
Kanal va guruhlar katalogi Kanallar to‘plamlari Kanallar qidiruvi Kanal/guruh qo‘shish
Reytinglar
Telegram-kanallar reytingi Telegram-guruhlar reytingi Postlar reytingi Brendlar va shaxslar reytingi
API
Statistika API'si Postlar qidiruvi API'si API Callback
Kanallarimiz
@TGStat @TGStat_Chat @telepulse @TGStatAPI
O‘qish
Академия TGStat Telegram tadqiqoti 2019 Telegram tadqiqoti 2021 Telegram tadqiqoti 2023
Kontaktlar
Справочный центр Qo‘llab-quvvatlash Email Vakansiyalar
Har xil narsalar
Foydalanuvchi shartnomasi Maxfiylik siyosati Ommaviy oferta
Botlarimiz
@TGStat_Bot @SearcheeBot @TGAlertsBot @tg_analytics_bot @TGStatChatBot