' SED'如果我运行脚本但是如果我从java程序运行脚本,则commad正在调用

时间:2014-05-09 07:11:44

标签: java shell

我在脚本中使用'sed'命令。我直接从我的机器上运行该脚本。它工作正常,取代了我想要替换的字符串。但是当我使用sshconnection从java程序执行该脚本时,脚本正在执行但字符串未被替换。 (sed无法正常工作)。

我的脚本会看起来像这样

if grep 'apple' '/opt/dir1/dir2/somescript.sh';
then

    echo "something";

else

    sed -i.bak s/'apple'/'banana'/g /opt/dir1/dir2/somescript.sh;

    rm -rf /tmp/t3.sh

fi

指令“rm -rf /tmp/t3.sh”只是检查脚本是否被调用。文件't3.sh'被删除,这意味着脚本被成功调用。

1 个答案:

答案 0 :(得分:0)

  

它说:   sed: couldn't open temporary file /opt/dir1/dir2/sednnru1B: Permission denied

     

- 如何授予文件访问权限??

有几种可能性。

  • 您可以作为有权在/opt/dir1/dir2中打开临时文件的用户进行ssh-connect。

  • 您可以更改/opt/dir1/dir2上的权限,以便使用过的用户帐户可以在此目录中打开临时文件。

  • 如果使用过的用户帐户有/opt/dir1/dir2/somescript.sh的写入权限而您.bak中没有/opt/dir1/dir2文件,则可能会有效:

        sed s/apple/banana/g  /opt/dir1/dir2/somescript.sh >/tmp/somescript.sh
        cp /tmp/somescript.sh /opt/dir1/dir2/somescript.sh
    
  • ...