Обычно я использую команду чтения для чтения входного файла в оболочку script по очереди. Примерный код, такой как приведенный ниже, дает неверный результат, если новая строка не вставлена в конце последней строки во входном файле blah.txt.
#!/bin/sh
while read line
do
echo $line
done <blah.txt
Итак, если входной файл читает что-то вроде -
One
Two
Three
Four
и я не получаю ответ после Four, script не может прочитать последнюю строку и печатает
One
Two
Three
Теперь, если я оставлю лишнюю пустую строку после четырех, например,
One
Two
Three
Four
//blank line
вывод выводит все строки, включая четыре. Однако это не тот случай, когда я читал строку с помощью команды cat
; все строки, включая последние, печатаются без меня, чтобы добавить лишнюю пустую строку в конце.
У кого-нибудь есть идеи, почему это происходит? Создаваемые мной сценарии в основном будут выполняться другими, поэтому нет необходимости, чтобы они добавили лишнюю пустую строку в конец каждого входного файла.
Я пытался понять это на протяжении веков; Я был бы признателен, если у вас есть какие-либо решения (конечно, команда cat
- одна, но я хотел бы знать, почему причина чтения не работает).