外壳编程中的转义功能



为什么命令

echo `echo \z`

导致

z

而不是

z

这是因为`..`增加了一个额外的逃生级别。 $(..) 不会,并且是执行命令扩展的首选方法。

鉴于

echo `echo \z`

我们可以删除一定程度的转义并使用$(..)来获得:

echo $(echo z)

和不引号,z等同于z,所以我们最终得到:

echo $(echo z)

请注意,外部回声与此无关。反斜杠在扩展数据的一部分时从不特别处理。

我想你实际运行的是:

echo `echo \z`

如果是这样的话,在内部回声中,\被转义到,然后在外部回声中,z产生"z"。就像你跑一样

回显 \z

顺便说一句,请注意使用单个逗号以防止转义

echo '\z'

这导致

\z

最新更新