Unix脚本在读取行时循环cat文件"没有这样的文件或目录"错误

时间:2016-04-22 14:28:45

标签: linux shell ksh su

我有一个脚本读取参数文件,并将使用该脚本中每行的值执行一些操作。我的输入文件有空格作为分隔符。

奇怪的是,它适用于旧版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 个答案:

答案 0 :(得分:3)

最好使用sudo以root身份执行命令。不需要引号,可以通过其配置文件以细粒度的方式控制sudo访问。

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

您知道,您可以通过编写su root -c "cat file"来修复您的su命令。命令需要通过-c选项传递。但是,sudo仍然更好。