我在脚本中使用'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'被删除,这意味着脚本被成功调用。
答案 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
...