在shell中的双引号字符串中回退引用
发布时间:2020-12-15 18:44:55 所属栏目:安全 来源:网络整理
导读:对于命令:/usr/bin/sh -c“ls 1”“(1后面的反引号). 如何使其成功运行?在“`”之前添加反斜杠不起作用. `是我们知道的一个特殊的字符,我试着用单引号(/usr/bin/sh -c“ls 1’`’”)来包围它,但是也不行. 错误总是: % /usr/bin/sh -c "ls 1`"Unmatched `
对于命令:/usr/bin/sh -c“ls 1”“(1后面的反引号).
如何使其成功运行?在“`”之前添加反斜杠不起作用. 错误总是: % /usr/bin/sh -c "ls 1`" Unmatched `
你需要逃离反向,但也可以逃避反斜杠:
$touch 1` $/bin/sh -c "ls 1`" 1` 你必须逃避它的原因“两次”是因为你在一个环境(如shell脚本)中输入这个命令,它解释双引号字符串一次.然后它被subshel??l再次解释. 你也可以避免双引号,从而避免了第一个解释: $/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中避免使用这样的文件名. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |