如何在bash中执行php脚本?
我需要在shell脚本中解析uri。因此,我尝试在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
#!/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也比较熟悉。