Linux Unix脚本在读取“行”时循环cat文件;没有这样的文件或目录;错误
我有一个脚本,它读取一个参数文件,并将使用该脚本中每一行的值执行一些操作。我的输入文件使用空格作为分隔符 奇怪的是,它可以在旧版本的Linux上工作,但不能在新版本上工作Linux Unix脚本在读取“行”时循环cat文件;没有这样的文件或目录;错误,linux,shell,ksh,su,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版本
#! /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版本上工作。最好使用sudo以root用户身份执行命令。不需要引号,可以通过配置文件以细粒度的方式控制sudo访问
sudo cat /var/opt/OV/tmp/HPOV_gg.log | while ...
正如您所知,您可以通过编写
su root-c“cat文件”
来修复su命令。命令需要通过-c
选项传递。但是,sudo还是更好。最好使用sudo作为root用户执行命令。不需要引号,可以通过配置文件以细粒度的方式控制sudo访问
sudo cat /var/opt/OV/tmp/HPOV_gg.log | while ...
正如您所知,您可以通过编写
su root-c“cat文件”
来修复su命令。命令需要通过-c
选项传递。但是,sudo还是更好。你能编辑你的问题以包含su root“ls-l/var/opt/OV/tmp/HPOV_gg.log”
?[elp000161(root):/root]su root“ls-l/var/opt/OV/tmp/HPOV_gg.log”bash:ls-l/var/opt/OV/tmp/HPOV_gg.log的输出吗?没有出现问题的文件或目录。我像John建议的那样添加了a-c参数,现在它可以工作了。您可以编辑您的问题以包括su root“ls-l/var/opt/OV/tmp/HPOV_gg.log”
?[elp000161(root):/root]su root“ls-l/var/opt/OV/tmp/HPOV_gg.log”bash:ls-l/var/opt/OV/tmp/HPOV_gg.log的输出吗?没有出现问题的文件或目录。我像John建议的那样添加了a-c参数,现在它可以工作了。