от DeepUltramarine(11-07-2025)
На 5 юли бе съобщено, че версия 5.3 на BASH е на
разположение.
И идва с ключови подобрения.
Ето някои от тях:
- Нова форма на заместване на команди - ${ command; } и ${|
command; } - която изпълнява командата в текущия контекст на
обвивката, вместо да стартира дъщерен процес или да използва
неименувани канали - pipes.
- BASH ще принтира номера на реда на началото на if блок,
ако той не завършва коректно с fi и ще посочи, какъв е
проблема.
Без повече объркващи съобщения.
- Ако regex в скрипт не може да се компилира, това ще доведе
до съобщение за грешка.
Досега такова липсваше и не беше ясно, дали regex не среща
съвпадение или е невалиден.
Съобщението за грешка при невалиден израз, ще внесе яснота
по въпроса.
-
Нова променлива на средата GLOBSORT, която позволява да
определите, как да бъдат сортирани папки и директории при
листването им.
Възможните опции са name, size, blocks, mtime, atime, ctime,
numeric и none, във възходящ или низходящ
ред.</LI>
- Командата compgen, която се използва за генериране на
възможни съвпадения за автодопълване на команди, променливи,
файлове и директории, се сдоби с нова опция -V, която
позволява да съхранетие директно изхода от командата в
променлива.
Която се явява вече, като индексиран масив.
Допълнителни възможности за вашите скриптове.
- Нова, постоянно меняща се променлива на средата
BASH_MONOSECONDS, която се определя от системния монотонен
часовник.
Какво е монотонен часовник.
При тестване производителността на скриптове и програми
често се взима системното време при стартиране на някой
процес, което се вади от новото системно време в края на
програма или скрипт.
Така получаваме разликата, която ни показва и времето за
изпълнение на задачата.
Повечето от нас сме свикнали да тестваме производителността
на кода.
Проблемът обаче при този подход е, че системния часовник
може да бъде променен със съответните инструменти.
Или просто синхронизиран с NTP например.
BASH_MONOSECONDS ни осигурява непрестанно нарастваща
стойност на времето, която не може да бъде върната назад или
променена и повлияна от часовите зони.
Например:
start=$BASH_MONOSECONDS
sleep 2
end=$BASH_MONOSECONDS
echo "Изминало време: $(( (end - start) / 1000000 ))
милисекунди"
За други повече и по-малко полезни промени, можете да
научите от тук:https://lists.gnu.org/archive/html/bug-...
На същия адрес има и списък с оправените бъгове по BASH.
<< | Let's Encrypt сертификат за IP адрес >>
|