Bash 3.0
Версия реализации bash языка программирования Unix shellВ Bash 3.0 были добавлены некоторые новые полезные функции: отладчик для bash-скриптов, подстановка численных значений введенных при помощи конструкции {x..y}
, временные отметки в файле истории команд, улучшенный поиск с помощью регулярных выражений, поддерживающий синтаксис egrep и некоторые другие функции. Также было исправлено значительное количество ошибок и уязвимостей.
Ссылки:
Примеры:
Факториал - Unix shell (3):
Используется рекурсивное определение факториала.
function factorial {
typeset -i n=$1
if [ $n = 0 ]; then
echo 1
return
fi
echo $(( n * $(factorial $(( n - 1 )) ) ))
}
for i in {0..16}
do
echo "$i! = $(factorial $i)"
done
Hello, World! - Unix shell (253):
MESSAGE='Hello'
TARGET='World'
echo "$MESSAGE, $TARGET!"
Факториал - Unix shell (254):
Используется итеративное определение факториала.
f=1
for (( n=1; $n<=17; $((n++)) ));
do
echo "$((n-1))! = $f"
f=$((f*n))
done
Числа Фибоначчи - Unix shell (255):
Используется итеративное определение чисел Фибоначчи.
a=0
b=1
for (( n=1; $n<=16; n=$n+1 ));
do
a=$(($a + $b))
echo -n "$a, "
b=$(($a - $b))
done
echo "..."
Hello, World! - Unix shell, Foma (368):
echo Hello, World!
Факториал - Unix shell (369):
Пример, работающий в версиях Unix shell, не поддерживающих синтаксис for i in {0..16}
или ((i = 0; i <= 16; i++))
: цикл for
конструируется “вручную”.
В mksh используются 32-битовые целые числа, так что для факториалов чисел больше 13 в этой реализации происходит переполнение.
function factorial {
typeset -i n=$1
if [ $n = 0 ]; then
echo 1
return
fi
echo $(( n * $(factorial $(( n - 1 )) ) ))
}
i=0
while [[ $i -le 16 ]]
do
echo "$i! = $(factorial $i)"
((i++))
done
Комментарии
]]>blog comments powered by Disqus
]]>