Еще один способ, совместимый с POSIX, заключается в использовании awk
с его функцией length()
, которая возвращает длину в символах в каждой строке входного файла, исключая символы новой строки. Таким образом, делая
awk '{ sum+=length } END { print sum+NR }' file
мы гарантируем, что NR
добавляется к sum
, что приводит к общему количеству символов и общему количеству новых строк, встречающихся в файле. Функция length()
в awk
принимает аргумент, который по умолчанию означает length($0)
для всей текущей строки.
Вы должны читать man getopt getopts
, а не -пере -пере -изобретать варианты синтаксического анализа.
Вы могли бы сделать свой цикл более компактным, поняв, что $#
уменьшается наshift
:
while [[ $# -gt 0 ]] ; do
# some code using $1
shift
done