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 лучше.