几个月前,我在手臂上纹了一个叉形炸弹,我跳过了空格,因为我觉得没有它们看起来更好看。但令我沮丧的是, 有时 (并非总是)当我在 shell 中运行它时,它不会启动一个 fork 炸弹,但它只会给出一个语法错误。
bash: syntax error near unexpected token `{:'
昨天,当我尝试在朋友的Bash shell中运行它时发生了这种情况,然后我添加了空格,它突然起作用了,:(){ :|:& };:而不是:(){:|:&};:
:(){ :|:& };:
:(){:|:&};:
空格是否重要?我在手臂上纹了语法错误吗?!
它似乎总是在zsh中工作,但在 Bash 中却不行。
BASH 中有一个分隔标记的字符列表。这些字符称为 元字符 ,它们是|, &, ;, (, ), <, >, 空格 和 制表符 。另一方面,花括号 ({和}) 只是组成单词的普通字符。
|
&
;
(
)
<
>
{
}
省略之前的第二个空格}就可以了,因为&它是一个元字符。因此,你的纹身应该至少有一个空格字符。
:(){ :|:&};: