В текущей версии Debian (10 )udevd
теперь systemd-udevd
, и это не путь по умолчанию; вам нужно бежать
/lib/systemd/systemd-udevd --debug &
вместо этого.
СМОП.
Сначала используйте grep
для выбора строк, используйте cut
для извлечения поля и суммирования значений.
Не проверено
#!/bin/bash
pat="$1"
export total=0
grep ",$pat," file.txt |\
cut -d, -f6 |\
while read num ; do
total=$total + $num
done
echo "$total"
Прежде чем рассматривать этот способ, см. Почему использование цикла оболочки для обработки текста считается плохой практикой?
Тем не менее, ваша попытка близка (одной очевидной проблемой является пробел вокруг =
в вашем total_length
задании ).
#!/bin/bash
sum=0
while IFS=, read -a fields; do
if [[ ${fields[12]} = "$1" ]]; then
(( sum += fields[5] ))
fi
done < file.csv
printf 'sum: %d\n' "$sum"
Вы можете сократить if..then..fi
с помощью короткой логики -схемы, если хотите, например.
[[ ${fields[12]} = "$1" ]] && (( sum += fields[5] ))
Нет необходимости явно пропускать строку заголовка, так как она не пройдет тест ${fields[12]} = "$1"
.