对于命令:/usr/bin/sh -c“ls 1”“(1后面的反引号).
如何使其成功运行?在“`”之前添加反斜杠不起作用.
`是我们知道的一个特殊的字符,我试着用单引号(/usr/bin/sh -c“ls 1’`’”)来包围它,但是也不行.
错误总是:
% /usr/bin/sh -c "ls 1\`" Unmatched `
你需要逃离反向,但也可以逃避反斜杠:
$touch 1\` $/bin/sh -c "ls 1\\\`" 1`
你必须逃避它的原因“两次”是因为你在一个环境(如shell脚本)中输入这个命令,它解释双引号字符串一次.然后它被subshell再次解释.
你也可以避免双引号,从而避免了第一个解释:
$/bin/sh -c 'ls 1\`' 1`
另一种方法是将文件名存储在变量中,并使用该值:
$export F='1`' $printenv F 1` $/bin/sh -c 'ls $F' # note that /bin/sh interprets $F,not my current shell 1`
最后,你尝试的工作在一些shell(我使用bash,就像上面的例子),显然不是你的shell:
$/bin/sh -c "ls 1'\`'" 1` $csh # enter csh,the next line is executed in that environment % /bin/sh -c "ls 1'\`'" Unmatched `.
我强烈建议您在first place中避免使用这样的文件名.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。