数か月前、私はフォーク爆弾私の腕には、空白文字がないので、空白文字がない方が見栄えが良いと思ったので、空白文字を省略しました。しかし残念なことに、シェルで実行すると、時々 (常にではありませんが) フォーク爆弾は発生せず、構文エラーが発生するだけです。
bash: syntax error near unexpected token `{:'
昨日、友人のところで実行しようとしたときに起こったバッシュシェルを実行してから空白を追加すると、突然機能する:(){ :|:& };:
ようになりました。:(){:|:&};:
空白は重要ですか; 腕に構文エラーのタトゥーを入れてしまったのでしょうか?!
いつもうまくいくようだ翻訳ただし、Bash ではそうではありません。
関連する質問空白については何も説明されていません。これが私の本当の疑問です。Bashが正しく解析するためにはなぜ空白が必要なのでしょうか?
ベストアンサー1
BASH にはトークンを区切る文字のリストがあります。これらの文字はメタ文字と呼ばれ、、、、、、、、スペース、タブです。一方|
、中括弧(と&
)は単語を構成する通常の文字です。;
(
)
<
>
{
}
はメタ文字なので、前の 2 番目のスペースを省略して}
も問題ありません&
。したがって、タトゥーには少なくとも 1 つのスペース文字が必要です。
:(){ :|:&};: