Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在bash中执行php脚本?_Php_Bash_Parse Url - Fatal编程技术网

如何在bash中执行php脚本?

如何在bash中执行php脚本?,php,bash,parse-url,Php,Bash,Parse Url,我需要在shell脚本中解析uri。因此,我尝试在bash中使用php,如下所示 #!/bin/sh uri="http://www.google.com?key=value key="host" value=$(php -r "$parse = parse_url('$uri'); echo $parse['$key']") 它显示了以下错误 PHP Parse error: syntax error, unexpected '=' in Command line code on li

我需要在shell脚本中解析uri。因此,我尝试在bash中使用php,如下所示

#!/bin/sh

uri="http://www.google.com?key=value
key="host"

value=$(php -r "$parse = parse_url('$uri'); echo $parse['$key']")
它显示了以下错误

PHP Parse error:  syntax error, unexpected '=' in Command line code on line 1

一些人可以帮助如何在bash中使用嵌入式php?

一种廉价的调试方法是使用
echo
查看传递给php的内容:

echo "$parse = parse_url('$uri'); echo $parse['$key']"
显示

 = parse_url('http://www.google.com?key=value'); echo ['host']
您已经在使用
$uri
来表示“shell变量uri的值”,因此
$parse
也被视为shell变量并扩展到其值(unset,nothing)也就不足为奇了

当您希望在双引号字符串中使用文字美元符号时,请使用
\$

value=$(php -r "\$parse = parse_url('$uri'); echo \$parse['$key']")

您可以轻松地使用它,但必须小心,因为在bash中会逃跑

我建议使用单引号(您不需要转义任何内容),并在需要执行特殊操作时退出引号。你的例子是:

php -r '$parse=parse_url("'$url'"); echo $parse["'$part'"];'
注意

  • 您不需要转义
    $parse
  • 插入bash变量时,需要从单引号中退出:
    “$url”
  • 不能在单引号中使用单引号!请使用双引号
更新:


只是为了澄清-发生解析错误,因为
$parse
被解释为bash变量(空字符串)因此,php命令错误地以
=

开头,为什么不直接使用php并调用php?
php测试。php
也可以在命令行上调用,就像使用bash脚本一样。看起来您对php也比较熟悉。