Я не знаю, что с ним не так, но одна маленькая вещь, которую я заметил:
Измените for FILE in $@
на for FILE in "$@"
. Потому что, если файлы имеют встроенные пробелы, вы теперь на безопасном пути. Затем он расширится до "$1" "$2" ...
, вместо $1 $2 ...
(и помните, что везде, где вы используете $ FILE, тоже не забывайте ""
его).
И что говорят другие, вам не нужно инициализировать FILE
перед тем, как войти в цикл. Он будет установлен на каждое из имен файлов расширенных позиционных параметров в цикле for автоматически.
Тем не менее, я бы пошел со скриптом awk следующим образом:
awk -F: '
/^Total/ {
total += $2
# count++ not needed. see below
print FILENAME "(s) have a total of: " $2
}
END {
print "Total is: " total
print "Number of files read is: " (ARGC-1)
}' foo*.txt
Обратите внимание, что когда файл содержит несколько строк «^ Count», вы действительно скажете, что прочитали больше файлов, чем фактически прочитали, если бы использовали count
, чтобы указать количество прочитанных файлов.