Bash 查找并替换为CGI脚本

Bash 查找并替换为CGI脚本,bash,replace,cgi,Bash,Replace,Cgi,我正在尝试使用CGI脚本在特定文本文件上运行查找和替换命令 我目前有一个CGI脚本(foo.sh),然后执行一个非CGI shell脚本(bar.sh)。在非CGI shell脚本(bar.sh)中,我能够执行许多简单的bash命令,如wget、mkdir和cd,并且还能够使用标准的点斜杠bash语法执行.js文件 但是,当使用CGI执行时,我无法使用任何查找和替换命令。我尝试过sed、awk和perl,如果直接在命令行上使用,或者从命令行执行bar.sh,所有这些都能很好地工作。但是,一旦我尝

我正在尝试使用CGI脚本在特定文本文件上运行查找和替换命令

我目前有一个CGI脚本(foo.sh),然后执行一个非CGI shell脚本(bar.sh)。在非CGI shell脚本(bar.sh)中,我能够执行许多简单的bash命令,如wget、mkdir和cd,并且还能够使用标准的点斜杠bash语法执行.js文件

但是,当使用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
sed-i's/foo/bar/g'text.txt
{rm text.txt&&awk'{gsub(“foo”,“bar”,“$0”);print}>text.txt;}
只需一些想法:

  • 如果由web服务器运行,脚本可能会作为其他用户执行,这可能会导致与权限相关的问题
  • 可能awk/sed等命令不在web服务器进程使用的路径中(此处也尝试使用绝对路径)
  • web服务器的错误日志中是否有任何内容

    • 谢谢Michael的意见,很抱歉回复太晚。您是正确的,这是一个权限问题,因为CGI脚本不是以我的身份运行,而是以“www数据”用户的身份运行

      出现此问题是因为该用户没有写入权限在目标文件夹(在本例中是/usr/share/中的目录)上执行sed find and replace命令

      我已将目标文件夹的权限更改为“完全读取/写入所有人”,现在脚本已成功运行


      再次感谢。

      您确定您的脚本在正确的目录下运行,并且使用了正确的本地文件路径吗?谢谢。是的,我实际上是从根级别指定文本文件的目录。我最初问题中的文件路径只是一个例子。