Практическое написание сценариев командной оболочки Bash: различия между версиями

Содержимое удалено Содержимое добавлено
Строка 28:
Например, можно написать сценарий, который будет одинаково хорошо исполняться, вообще говоря, в разных командных оболочках Bash и Zsh. Но при этом приходится жертвовать использованием очень полезных расширений Bash, существенно упрощающих написание кода скрипта.
 
Даже в пределах одного мажорного номера, разные версии Bash могут интерпретировать некоторые конструкции по-разному, поэтому следует тщательно тестировать большие сценарии. Например сравните как выполняется следующий код в разных версиях Bash:
<source lang=bash>
#!/bin/bash
 
echo "BASH VERSION = $BASH_VERSION"
echo "--------------------------------"
while read -r key val; do
echo "$key = $val"
done <<< $(
for key in alpha beta gamma; do
for value in {1..3}; do
printf "$key $value\n"
done
done
)
</source>
<source lang=bash>
BASH VERSION = 4.4.19(1)-release
--------------------------------
alpha = 1
alpha = 2
alpha = 3
beta = 1
beta = 2
beta = 3
gamma = 1
gamma = 2
gamma = 3
 
#------------------------------------------------
BASH VERSION = 4.2.46(2)-release
--------------------------------
alpha = 1 alpha 2 alpha 3 beta 1 beta 2 beta 3 gamma 1 gamma 2 gamma 3
 
</source>
 
Еще Bash имеет плохую производительность и не может полноценно выполнять арифметические операции, но учитывая специфику задач, которые он решает, это не так уж и важно. Если вам нужны более производительные сценарии, которые требуют также обработки сложных структур данных, следует отдавать предпочтение более продвинутым скриптовым языкам, например ''Perl''.