sh无法将内容写入文件

时间:2017-02-07 10:14:58

标签: php bash shell unix sh

我使用magephp进行服务器的PHP部署。该脚本使用sh -c \" ... \"在远程服务器上执行命令。一切正常,直到我想将一些内容写入远程服务器上的文件。

为此,我尝试运行echo 'foobar' > test.txt命令,该命令显然因为包围命令的分隔符\"而失败。有趣的是,如果我使用非转义分隔符(即")执行命令,我可以将文件写入内容。请参阅下面的工作示例:

$ sh -c "echo 'foobar' > test.txt"

然而,这不起作用:

$ sh -c \"echo 'foobar' > test.txt\"
foobar: -c: line 0: unexpected EOF while looking for matching `"'
foobar: -c: line 1: syntax error: unexpected end of file

奇怪的是,在此命令失败后,我创建了test.txt"个文件但没有任何内容。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

解决方案是将重定向包装(隐藏)到脚本中:

  • /my/path/print.sh

    echo '$1' > $2
    
  • 来自magephp的电话:

    sh -c \" /my/path/print.sh 'foobar' test \"
    

答案 1 :(得分:0)

谢谢大家的贡献。我们在mage项目中创建了该问题,并且该命令已经过重新设计,不使用\"作为分隔符。这样就不需要任何逃避技巧了。

https://github.com/andres-montanez/Magallanes/issues/350