- 書式
- block [OPTIONS...]
概要
block
コマンドはイベントを遮断し、
取り除かれるまでずっと遮断し続けます。
イベントはfish自身や
emit コマンドから発信されます。
関数内において、
シェルによって中断されるべきではない
コマンドを実行するのに
block
は便利です。
block
は取り除けます。
block
が有効だった間に
受信された全てのイベントが
一度に受信されるようになります。
イベントのブロックを
begin
/ if
/ while
/ for
/ switch
/ function
で
作られるコードブロックと混同しないでください。
オプション
-l
/--local
- 最も内側の スコープ を抜けたら
自動的にブロックを解放する -g
/--global
- 決して自動的にブロックを解放しない
-e
/--erase
- グローバルブロックを解放する
使用例
fooイベントに対する
イベントハンドラー 関数を定義し、
block
と emit
の挙動を確認します。
# イベントハンドラーを定義 $ function --on-event foo foo; echo 'foo fired'; end # ブロック! $ block -g # イベントを発行しても何も反応しない $ emit foo $ emit foo # ブロックを解放すると、 # ブロックされている間に受信したイベントを受信する # 2回発行されたため、2回反応する $ block -e foo fired foo fired # ブロックがないので普通に反応する $ emit foo foo fired
block -g
は
全イベントに効果があります。
$ function --on-event foo foo; echo 'foo fired'; end $ function --on-event bar bar; echo 'bar fired'; end $ block -g $ emit foo $ emit bar $ emit bar $ emit foo $ block -e foo fired bar fired bar fired foo fired
block -l
は
begin を抜けたときに
自動的にブロックを解放します。
$ function --on-event foo foo; echo 'foo fired'; end $ begin block -l; emit foo; end foo fired $ emit foo foo fired
最後までお読みいただき、ありがとうございました。参考になれば嬉しいです。