为什么这个PHP代码不能在Linux中使用双引号的命令行上运行

我可以访问带有PHP 7.0的Ubuntu服务器。 我可以毫无问题地运行以下代码:</ p>

  php -r“echo'hello world';”
</ code> </ pre>

< p>但是当我添加这样的赋值运算符时:</ p>

  php -r“echo'hello world'; $ t ='hello world';”
</ code > </ pre>

我收到以下错误:</ p>


PHP解析错误:语法错误,意外'=',期待文件结束 在命令行代码</ p>
</ blockquote>

我刚刚在输入这个问题时意识到这可能正在发生,因为shell正在尝试评估 $ t </ code>。 有没有让它不评估 $ t </ code>? 我问的原因是因为代码将包含单引号。 我想简单的解决方案是将代码中的单引号更改为双引号但是如果有办法在不改变代码的情况下执行它,那么知道它可能会有用。</ p>
</ div>

展开原文

原文

I have access to an Ubuntu server with PHP 7.0. I can run the following code without any problems:

php -r "echo 'hello world';"

But when I add an assignment operator like this:

php -r "echo 'hello world'; $t = 'hello world';"

I get the following error:

PHP Parse error: syntax error, unexpected '=', expecting end of file in Command line code

I just realized while typing this question that this is probably happening because the shell is trying to evaluate $t. Is there anyway to make it not evaluate $t? The reason I ask is because the code will contain single quotes. I suppose the simple solution would be to change the single quotes in the code to double quotes but if there is a way to do it without altering the code, it might be useful to know.

doumi9618
doumi9618 “我刚刚在输入这个问题时意识到这可能正在发生,因为shell试图评估$t”-给那个男人一支雪茄吧!问:“无论如何要让它不评估$t?”答:有几种方法。为了您的目的,只需逃避$:\$t。
3 年多之前 回复

2个回答




  1. 你可以使用单引号作为php代码,但是你不能在php代码中使用它们。</ li>
  2. 使用 \ </ code>转义php代码中的所有特殊shell字符,即:</ p>

      php -r“echo” 你好世界'; \ $ t ='你好世界';“
    </ code> </ pre> </ li>
    </ ol>
    </ div>

展开原文

原文

  1. you can use single quotes for php code, but then you can't use them inside php code.
  2. escape all special shell characters in php code with \, ie:

    php -r "echo 'hello world'; \$t = 'hello world';"
    



要防止脚本中的shell变量替换,您应该将代码用单引号括起来并在里面使用双引号。 如果您因任何原因需要在代码段中使用单引号,则使用反斜杠转义它们:</ p>

  php -r'echo \'hello world \';  $ t = \'hello world \';'
</ code> </ pre>
</ div>

展开原文

原文

To prevent shell variable substitution in your script you should wrap the code in single quotes and use double quotes inside. If you need to have single quotes in your code snippet for whatever reason then escape them with a backslash:

php -r 'echo \'hello world\'; $t = \'hello world\';'

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐