【问题标题】:Sending argument from CGI script as bash script argument从 CGI 脚本发送参数作为 bash 脚本参数
【发布时间】:2016-05-01 08:39:42
【问题描述】:

我正在尝试通过我的 cgi 脚本将参数传递给我的 bash 脚本。这可能听起来有点混乱,所以这里是解释,

我有一个名为 script.sh 的 bash 脚本,它接受一个参数,比如说 name 所以我像这样执行这个脚本,

bash script.sh myName

然后将名称写入文本文件,然后我可以从该文本文件中读取它。

这很好用,但我希望能够通过 cgi 执行相同的命令,所以我在我的 cgi 文件中执行了此操作,

`/bin/echo "bash script.sh myName"`;

现在我像这样通过我的网络服务器执行这个 cgi 脚本,

http://localhost/index.cgi

但是myName 没有作为参数传递给我的 bash 脚本,因此文本文件上没有写入任何内容。

谁能告诉我为什么当我通过 cgi 脚本运行时它不工作但在没有 cgi 脚本运行时工作正常?

编辑:我也尝试过使用exec(),但参数仍然无法通过。

【问题讨论】:

  • CGI 脚本是用什么编程语言编写的?
  • #!/bin/csh 所以它的 C-shell

标签: linux bash shell csh


【解决方案1】:

在您写的问题的 cmets 中,CGI 脚本是用 CSH 编写的。

那么就这么简单了

script.csh

#!/bin/csh
./script.sh argX

script.sh

#!/bin/bash
echo 'hello,' $1

测试脚本.csh

./script.csh 
hello, argX

这不是你要找的,请澄清。

【讨论】:

  • 假设 abcd 写在一个文本文件中,我的 bash 脚本接受一个参数并使用该参数修改 abcd 的值。当我运行./index.cgi 时,它做得很完美。但是当我通过网络服务器运行它时,即http://localhost/index.cgi,这不会发生,即文本文件仍然显示abcd
  • 你对那个目录有写权限吗?
  • @RileyWillow,您正在运行哪些服务器软件(Nginx、Apache 等)?日志中有什么东西吗?
  • 写入/tmp/目录
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-05
  • 2013-12-12
  • 1970-01-01
  • 1970-01-01
  • 2012-10-15
相关资源
最近更新 更多