number_of_elements = $( sed 's/[^,]//g' elements.txt | wc -c )
Попытался бы запустить команду number_of_elements
с =
и результатом split + glob, примененным к выходу команды wc
в качестве аргументов. В оболочках типа Bourne скалярные переменные присваиваются с помощью var = value
без символа пробела вокруг =
( var
также должно быть буквальным и быть допустимое имя переменной).
Также обратите внимание, что команда sed
удалит все, кроме ,
, новой строки и байтов, не входящих в допустимые символы в elements.txt
.
Если вы хотите подсчитать только символы ,
, вы должны сделать:
count=$(tr -cd , < elements.txt | wc -c)
Для ,
и новой строки:
count=$(tr -cd ',\n' < elements.txt | wc -c)
(но будьте осторожны с некоторыми wc
, $ count
может иметь некоторые начальные или конечные пробелы).
Чтобы добавить некоторое число:
count=$(($(tr -cd , < elements.txt | wc -c) + 1))
Содержимое $ ((...))
обрабатывается так, как если бы внутри «...»
: расширение параметра, арифметическое расширение и подстановка команд по-прежнему выполняется.Чтобы удалить лишние пробелы, упомянутые выше, вы можете сделать:
count=$(($(... | wc -c)))
вместо:
count=$(... | wc -c)