为什么有时在元字符周围需要空格?
几个月前,我在我的胳膊上纹了一个叉形炸弹,我跳过了空格,因为我认为没有它们看起来更好。 但令我沮丧的是, 有时 (并非总是),当我在shell中运行它时,它并不启动fork炸弹,但它只是给出了语法错误。
bash: syntax error near unexpected token `{:'
昨天它发生在我尝试在朋友的Bash shell中运行它时,然后我添加了空格,它突然生效, :(){ :|:& };:
而不是:(){:|:&};:
空白是否重要; 我的手臂上纹有语法错误吗?!
它似乎总是在zsh中工作,但不是在Bash中。
一个相关的问题并没有解释任何有关空格的问题,这实际上是我的问题。 为什么Bash需要空白才能正确解析它?
BASH中有一个用于分隔令牌的字符列表。 这些字符称为元字符,它们是|
, &
;
, (
, )
, <
, >
, 空格和制表符 。 另一方面,花括号( {
和}
)只是构成单词的普通字符。
省略前的第二空间}
会做,因为&
是元字符。 因此,你的纹身应该至少有一个空格字符。
:(){ :|:&};:
只是纹身一个
#!/bin/zsh
shebang在上面,你会没事的。
大括号比特殊符号更像奇怪的关键字,并且确实需要空格。 例如,这与括号不同。 比较:
(ls)
哪些工作,并且:
{ls}
它查找名为{ls}
的命令。 要工作,它必须是:
{ ls; }
分号停止左大括号作为ls
的参数。
您所要做的就是告诉人们您正在使用比例字体,而且字体空间相当狭窄。
链接地址: http://www.djcxy.com/p/29119.html上一篇: Why is whitespace sometimes needed around metacharacters?