如何在bash中执行php脚本?

时间:2014-03-03 06:36:08

标签: 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 line 1

有些正文可以帮助如何在bash中使用嵌入式php?

2 个答案:

答案 0 :(得分:4)

一种廉价的调试方法是使用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变量并扩展到其值并不奇怪(未设置,没有任何内容) )。

如果您想在双引号字符串中输入文字美元符号,请使用\$

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

答案 1 :(得分:3)

你可以轻松使用它,但你必须小心因为在bash中逃脱。

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

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

请注意

  • 您无需逃避$parse
  • 插入bash变量时需要退出单引号:'$url'
  • 你不能在单引号中使用单引号!请改用双引号"

<强>更新

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