加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

string – 如何回显“-e”?

发布时间:2020-12-15 19:01:08 所属栏目:安全 来源:网络整理
导读:我想回显一个可能包含与echo相同参数的字符串.如何在不修改字符串的情况下完成? 例如: $var="-e something"$echo $varsomething ……没打印-e 一个令人惊讶的深刻问题.由于你标记了 bash,我假设你的意思是bash的内部echo命令,尽管GNU coreutils的独立echo
我想回显一个可能包含与echo相同参数的字符串.如何在不修改字符串的情况下完成?

例如:

$var="-e something"
$echo $var
something

……没打印-e

一个令人惊讶的深刻问题.由于你标记了 bash,我假设你的意思是bash的内部echo命令,尽管GNU coreutils的独立echo命令可能工作得足够相似.

它的要点是:如果你真的需要使用echo(这会令人惊讶,但这就是现在问题的写法),这一切都取决于你的字符串究竟包含什么.

简单的情况:-e加非空字符串

在这种情况下,您需要做的就是在将变量传递给echo之前引用该变量.

$var="-e something"
$echo "$var"
-e something

如果字符串不是eaxctly一个echo选项或组合,包括任何非选项后缀,它将不会被echo识别出来并将被打印出来.

更难:字符串只能是-e

如果你的情况可以减少到只有“-e”,它会变得更加棘手.一种方法是:

$echo -e '55e'
-e

(转义破折号,因此它不会被解释为一个选项,但在八进制序列中)

那是重写字符串.它可以自动且非破坏性地完成,因此感觉可以接受:

$var="-e something"
$echo -e ${var/#-/55}
-e something

您注意到我实际上使用-e选项来解释八进制序列,因此如果您打算回显-E,它将无法工作.不过,它适用于其他选项.

正确的方式

说真的,你不仅限于回声,是吗?

printf '%sn' "$var"

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读