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

20 Aug, 12:15

Telegram'da ochish Ulashish Shikoyat qilish

lastpipe: как Bash меняет поведение последней команды в pipeline

Одна из особенностей Bash - команды в pipeline обычно выполняются в отдельных subshell. Из-за этого переменные, изменённые внутри while, после цикла могут не сохраниться.

Например:

count=0

printf '%s\n' a b c |
while read -r line; do
((count++))
done

echo "$count"

В некоторых случаях результатом будет 0.

Но у Bash есть настройка lastpipe, которая меняет это поведение.

▪️Включаем lastpipe

shopt -s lastpipe

Теперь последняя команда pipeline может выполняться в текущем shell.

count=0

printf '%s\n' a b c |
while read -r line; do
((count++))
done

echo "$count"

При подходящих условиях получим: 3

▪️Есть важное условие

lastpipe работает только когда job control отключён:

set +m
shopt -s lastpipe

Именно поэтому поведение может отличаться между интерактивным Bash и обычным скриптом.

▪️Проверить настройку

shopt lastpipe

Получим:

lastpipe off

или:

lastpipe on

▪️Почему это не универсальная замена

Вместо изменения поведения shell часто проще использовать редирект:

while read -r line; do
((count++))
done <

337 0 17 5
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