История изменений
Исправление Kroz, (текущая версия) :
Что конкретно покритиковать?
В суть не вчитывался.
По оформлению - вполне читабельно. Хотя я кое-что писал по-другому:
1. Дело каждого, но я все переменные именую заглавными буквами
2.
x=( [1]=21 [2]=22 [3]=23 )
Почему не
x=( 21 22 23 )
?
Правда тогда индексация с нуля начинается - и правильно.
3.
km=3
Что такое 3? Если длинна массива, то лучше написать
km="${#x[@]}"
По результату - то же, а код более понятный. Если 3 - не длинна массива, то как-то более правильно назвать переменную, или сделать комментарий, объясняющий что такое 3.
И, да, я все значения пишу в двойных кавычках - дабы напоминать себе что в bash всё есть строки.
4.
for ((i=1; i<=km; i++)); do
Тебе нужно пройтись по всем элементам массива то лучше так:
for E in "${x[@]}" ; do
Плюс в том, что будет пропускать «дырки» если таковые есть. Также, не нужно вводить дополнительную переменную km, и не нужно на каждой итерации проверять условия выхода из цикла. Да и вообще более родная для bash конструкция.
Только не забудь двойные кавычки, чтобы значения с пробелами правильно интерпретировались.
5.
if [[ $((${x["$i"]}+1)) -lt $maxx ]]; then
x["$i"]=$((${x["$i"]}+1))
fi
Когда в блоке if одна команда, проще так:
[[ $((${x["$i"]}+1)) -lt $maxx ]] && x["$i"]=$((${x["$i"]}+1))
6.
case "$r" in
Я люблю вконце писать что-то типа такого:
* ) echo "ERROR in source code" >&2 ;;
ну, и какую-то информацию чтобы было понятно где или почему произошло. Иногда помогает.
Исходная версия Kroz, :
Что конкретно покритиковать?
В суть не вчитывался.
По оформлению - вполне читабельно. Хотя я кое-что писал по-другому:
1. Дело каждого, но я все переменные именую заглавными буквами
2.
x=( [1]=21 [2]=22 [3]=23 )
Почему не
x=( 21 22 23 )
?
Правда тогда индексация с нуля начинается - и правильно.
3.
km=3
Что такое 3? Если длинна массива, то лучше написать
km="${#x[@]}"
По результату - то же, а код более понятный. Если 3 - не длинна массива, то как-то более правильно назвать переменную, или сделать комментарий, объясняющий что такое 2.
И, да, я все значения пишу в двойных кавычках - дабы напоминать себе что в bash всё есть строки.
4.
for ((i=1; i<=km; i++)); do
Тебе нужно пройтись по всем элементам массива то лучше так:
for E in "${x[@]}" ; do
Плюс в том, что будет пропускать «дырки» если таковые есть. Также, не нужно вводить дополнительную переменную km, и не нужно на каждой итерации проверять условия выхода из цикла. Да и вообще более родная для bash конструкция.
Только не забудь двойные кавычки, чтобы значения с пробелами правильно интерпретировались.
5.
if [[ $((${x["$i"]}+1)) -lt $maxx ]]; then
x["$i"]=$((${x["$i"]}+1))
fi
Когда в блоке if одна команда, проще так:
[[ $((${x["$i"]}+1)) -lt $maxx ]] && x["$i"]=$((${x["$i"]}+1))
6.
case "$r" in
Я люблю вконце писать что-то типа такого:
* ) echo "ERROR in source code" >&2 ;;
ну, и какую-то информацию чтобы было понятно где или почему произошло. Иногда помогает.