Вы, наверное, знаете об этой вилке :
:(){ :|:&};: #WARNING: harmful code
Интересно, почему для разбора необходимо включить пробел после открывающей фигурной скобки.
shell-script
Benoit
источник
источник
Я думаю, что @rush может дать правильный, если вводит в заблуждение ответ здесь. Вилочная бомба определяет функцию под названием "
:
". Код в фигурных скобках не выполняется, пока функция не будет вызвана окончанием ":
". Таким образом, фигурные скобки как группировка команд и фигурные скобки как тело функции синтаксически одинаковы, но имеют разную семантику.Из того же документа, что и @rush, цитирует:
источник
function_body
- этоcompound_command
(плюс необязательноredirect_list
). Пробел необходим, потому что{
это зарезервированное слово, а не специальный символ.brace_group
ведут себя по-разному, когда часть функции, а когда нет. Я использовал группировку команд для описания последнего случая, и это было описано в ссылке Rush.{
это не оператор, а зарезервированное слово, и слова должны быть отделены от других слов, чтобы считаться отличимыми.