我使用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"
个文件但没有任何内容。
有什么想法吗?
答案 0 :(得分:0)
解决方案是将重定向包装(隐藏)到脚本中:
/my/path/print.sh
echo '$1' > $2
来自magephp的电话:
sh -c \" /my/path/print.sh 'foobar' test \"
答案 1 :(得分:0)
谢谢大家的贡献。我们在mage项目中创建了该问题,并且该命令已经过重新设计,不使用\"
作为分隔符。这样就不需要任何逃避技巧了。