2016-04-22 5 views
0

У меня есть скрипт, который читает файл параметров и будет выполнять некоторые действия со значениями каждой строки в этом скрипте. Мой входной файл имеет пробелы в качестве разделителей.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 

Error: bash: cat /var/opt/OV/tmp/HPOV_gg.log: No such file or directory

ошибка имеет OBV что-то делать с новой версией Linux, разбор команды кошки по-другому.

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

+1

Можете ли вы изменить свой вопрос, чтобы включить вывод 'su root 'ls -l /var/opt/OV/tmp/HPOV_gg.log?'? –

+0

[elp000161 (корень):/root] su root "ls -l /var/opt/OV/tmp/HPOV_gg.log" bash: ls -l /var/opt/OV/tmp/HPOV_gg.log: Нет таких файл или каталог В этом была проблема. Я добавил параметр -c, как предложил Джон, теперь он работает. – Mathias1

ответ

3

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

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

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