我有一个脚本读取参数文件,并将使用该脚本中每行的值执行一些操作。我的输入文件有空格作为分隔符。
奇怪的是,它适用于旧版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版本。
答案 0 :(得分:3)
最好使用sudo以root身份执行命令。不需要引号,可以通过其配置文件以细粒度的方式控制sudo访问。
sudo cat /var/opt/OV/tmp/HPOV_gg.log | while ...
您知道,您可以通过编写su root -c "cat file"
来修复您的su命令。命令需要通过-c
选项传递。但是,sudo仍然更好。