Вы должны заключить переменную в кавычки, чтобы сохранить символы новой строки.
$ var=$(cat isbndb.sample); echo "$var" | wc -l
И cat
не требуется в обоих случаях:
$ wc -l < isbndb.sample
$ var=$(< isbndb.sample); echo "$var" | wc -l
Редактировать:
Bash обычно удаляет дополнительные завершающие символы новой строки из файла, когда назначает его содержимое переменной.Вы должны прибегнуть к некоторым уловкам, чтобы сохранить их.Попробуйте это:
IFS='' read -d '' var < isbndb.sample; echo "$var" | wc -l
Установка IFS
на ноль предотвращает разбиение файла на новые строки, а установка разделителя на read
на ноль заставляет его принимать файл до конца файла.