我正在尝试使用CGI脚本在特定文本文件上运行查找和替换命令。
我目前有一个CGI脚本(foo.sh),然后执行非CGI shell脚本(bar.sh)。在非CGI shell脚本(bar.sh)中,我能够执行许多简单的bash命令,如wget,mkdir和cd,并且我还能够使用标准点执行.js文件 - 斜杠bash语法。
然而,当使用CGI执行时,我无法获得任何查找和替换命令。我尝试过sed,awk和perl,当直接在命令行上使用或者从命令行执行bar.sh时,所有这些都可以正常工作。但是一旦我尝试从浏览器执行CGI脚本,find和replace命令就不再有效了。
我尝试过的语法如下。任何建议表示赞赏。
sed -i 's/foo/bar/g' text.txt
{ rm text.txt && awk '{gsub("foo", "bar", $0); print}' > text.txt; } < text.txt
perl -p -i -e 's/foo/bar/g' text.txt
答案 0 :(得分:1)
只是一些想法:
答案 1 :(得分:0)
感谢迈克尔的投入,并对迟到的回复感到抱歉。你是正确的,因为这是一个权限问题,因为CGI脚本不像我那样运行,而是作为“www-data”用户运行。
发生问题是因为该用户没有写入权限来执行目标文件夹上的sed find and replace命令(在本例中是/ usr / share /中的目录)。
我将目标文件夹的权限更改为完全读/写所有人,现在脚本成功运行。
再次感谢。