Как объединить два массива в bash, просуммировав как -индексы?

В Linux -центре повторного использования и утилизации компьютеров , где я когда-то работал добровольцем, жесткие диски были массово -стерты и массово -загружены Ubuntu. В настоящее время они используют Mint , но один и тот же процесс используется для различных моделей и версий ноутбуков.

Когда я работаю в учреждении из списка Fortune 50, мне иногда приходилось перемещать жесткие диски, на которых установлена ​​корпоративная Windows 10, с одной машины на другую. Это работает, но не будет работать, если вы не используете Enterprise с сервером лицензий.

0
08.05.2019, 14:15
2 ответа

Во-первых, определения массива в bashне берут ,между элементами массива, они просто определяются как

a=(1 0 1)
b=(0 1 1)

Чтобы сгенерировать новый массив с суммой элементов в тех же индексах, выполните итерацию по любому из индексов массива (предполагая одинаковую длину массива в обоих случаях )выполните

for idx in "${!a[@]}"; do 
    c[idx]=$(( a[idx] + b[idx] ))
done

Вместо перебора индексов с помощью ${!a[@]}можно также использовать традиционный стиль C -для повторения цикла до длины массива

for (( idx=0; idx < ${#a[@]}; idx++ )); do 

Наконец, чтобы напечатать результат в новом массиве, вы можете сделать что-то вроде

printf '%s\n' "${c[@]}"
2
28.01.2020, 02:30

Попробуйте это,

a=(1,0,1)
b=(0,1,1)
a1=(`echo $a | tr ',' ' '`)
b1=(`echo $b | tr ',' ' '`)
for i in `seq 0 1 ${#a1[@]}`
do
        c1[$i]=`expr ${a1[$i]} + ${b1[$i]}`
done
c=(`echo ${c1[@]} | tr ' ' ','`)
0
28.01.2020, 02:30

Теги

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