Чтобы сопоставить сочетания клавиш в Lubuntu / LXDE, вы можете отредактировать ~/.config/openbox/lxde-rc.xml
и перезапустите openbox через $ sudo openbox --reconfigure
перезагрузить конфигурацию.
Или вы можете использовать lxhotkey
, простую программу для настройки сочетаний клавиш.
Во-первых, вам нужно выбрать положительные числа, а не отрицательные
if (( arr[i] > 0 )); then
тогда вам нужно суммировать значения массива , а не индексы
sum=`expr $sum + ${arr[i]}`
или (, так как вы уже используете синтаксис арифметических вычислений ((... ))
в другом месте)
sum=$((sum + arr[i]))
Вы можете использовать трюк, чтобы заменить все элементы массива, начиная с(#
)на -
, ничем.
Таким образом, вы можете пропустить проверку в цикле.
$ arr=( 2 43 -1 -33 24 12 -6 )
$ echo "${arr[@]/#-*}"
2 43 24 12
И модифицированный скрипт:
#!/bin/bash
arr=( 2 43 -1 -33 24 12 -6 )
sum=0
for i in "${arr[@]/#-*}"; do
(( sum+=i ))
done
echo "$sum"
Просто для удовольствия, вы также можете использовать awk
, чтобы сделать зацикливание для вас
arr=(2 43 -1 -33 24 12 -6);
sum=$(echo ${arr[*]} | awk '
BEGIN{RS=" "}
$0>0{sum+=$0}
END{print sum}');
echo $sum
81
Удобно, если вы хотите сделать что-то большее, чем целочисленная математика
arr=(2 43 -1 -33 24 12 -6);
sqrt=$(echo ${arr[*]} | awk '
BEGIN{RS=" "}
$0>0{sum+=$0}
END{printf "%.2f", sum^0.5}');
echo $sqrt
9.00
Это моя новая попытка:
# 2+43+24+12=81
sum=0
arr=( 2 43 -1 -33 24 12 -6 )
arr=("${arr[@]/-*/0}")
sum=$(IFS=+; echo "$(( ${arr[*]} ))" )
echo "$sum"
81