Подсчет и добавление Если некоторые массивы имеют элемент при некотором индексе

используйте pactl set-stream-volume x 130% . Замените x на соответствующий объем стока (может помочь завершение bash. Для меня 0 соответствует выходу hdmi, а 1 - аналоговому выходу). Вы также можете использовать + 30% вместо 130%, чтобы увеличить громкость.

1
09.03.2019, 10:28
2 ответа

Ваш код генерирует синтаксическую ошибку для каждого элемента, который не установлен.

$ echo "${cluster1[0]+1}+${cluster2[0]+1}+${cluster2[0]+1}"
1+1+1

$ echo "${cluster1[1]+1}+${cluster2[1]+1}+${cluster3[1]+1}"
1+1+

В этом случае было бы лучше подсчитывать элементы набора, а не пытаться вычислять с помощью сгенерированного выражения:

#!/bin/bash

cluster1=(x y)
cluster2=(a b)
cluster3=(m)

for (( i = 0; i < 3; ++i )); do
    is_set=( ${cluster1[i]+"1"} ${cluster2[i]+"1"} ${cluster3[i]+"1"} )
    printf 'i=%d:\t%d\n' "$i" "${#is_set[@]}"
done

Это создает новый массив is_set, который будет содержать 1для каждого массива, содержащего элемент с индексом i. 1не имеет значения и может быть любой строкой. Количество элементов в массиве is_set(${#is_set[@]})равно количеству элементов набора из массивов clusterпо этому индексу.

Тестирование:

$ bash script.sh
i=0:    3
i=1:    2
i=2:    0
0
27.01.2020, 23:42

Возможно, это грязный трюк, но как насчет префикса0(сейфа, поскольку «Альтернативное значение» является допустимым восьмеричным числом):

my=$((0${cluster1[1]+1}+0${cluster2[1]+1}+0${cluster3[1]+1}))
echo $my
2
1
27.01.2020, 23:42

Теги

Похожие вопросы