Unix Script Looping cat file при чтении строки "Нет такого файла или каталога" ошибка

У меня есть скрипт, который читает файл параметров, и собираюсь выполнить некоторые действия со значениями каждой строки в этом скрипте. Мой входной файл имеет пробелы в качестве разделителей.

Странно то, что он работает на старой версии Linux, но не на более новой.

#! /bin/ksh
su root "cat /var/opt/OV/tmp/HPOV_gg.log" | while read Line
do
   echo "${Line}"
done

Ошибка: bash: cat /var/opt/OV/tmp/HPOV_gg.log: нет такого файла или каталога

Эта ошибка как-то связана с новой версией Linux, которая по-разному анализирует команду cat.

Как я могу это исправить? Или я могу переписать свой скрипт, чтобы он работал на этой новой версии Linux.

1 ответ

Решение

Лучше использовать sudo для выполнения команд от имени пользователя root. Никаких кавычек не требуется, и доступ к sudo можно детально контролировать с помощью его файла конфигурации.

sudo cat /var/opt/OV/tmp/HPOV_gg.log | while ...

Просто чтобы вы знали, вы можете исправить вашу команду su, написав su root -c "cat file", Команды должны быть переданы через -c вариант. Но все же, sudo лучше.

Другие вопросы по тегам