Обратите внимание, что нет ничего мешающего именам файлов содержать символы новой строки. Канонический способ выполнить команду для каждого файла, найденного находкой.
find . -type f -exec cmd {} \;
И если Вы хотите вещи, сделанные в ударе:
find . -type f -exec bash -c '
for file do
something with "$file"
done' bash {} +
Кроме того, канонический способ назвать команду "чтения" в сценариях (если Вы не хотите, чтобы это сделало дополнительную обработку на входе):
IFS= read -r var
-r
должен остановиться read
от обработки символов обратной косой черты особенно (как символ ESC для разделителей и новой строки), И IFS = для установки списка разделителей к пустой строке для read
(иначе, если бы какой-либо пробельный символ был в том списке, то они были бы разделены с начала и конца входа).
Используя циклы в оболочках обычно плохая идея (не, как вещи сделаны в оболочках, где Вы заставляете несколько инструментов работать коллективно и одновременно к задаче вместо того, чтобы выполнить один или несколько инструментов сотни времен в последовательности).
Решенный, для начальной загрузки от второго диска, в командной строке GRUB:
set root=(hd1) chainloader +1