質問: jobsコマンドを使用する上でzshでの挙動の違いに困っています.具体的には ``` #!/bin/zsh for i in {1..10}; do sleep 1 & jobs | wc -l jobs done ``` というのを実行すると,実行中のコマンド(sleep)は増えていくのにwcでカウントされる行数は0のままとなってしまいます. 試しにこれを#!/bin/zshではなく#!/bin/bashにすると期待通りに(wc -lの出力部分が増えていく)動きます. また,zshの場合でも上記のプログラムを端末上で直接入力した場合であれば,bashのように期待通りに動作することを確認しました. 実行環境は ・OS:Debian (stretch 9.3) ・zsh:5.3.1 ・bash:4.4.12 です. お手数ですが,原因がわかる方がいらっしゃいましたらご回答いただけると幸いです. それではよろしくお願いします.
回答: 詳細はよく読んでいませんが、 `setopt monitor` を実行すると、期待する動作になります。参考: ``` #!/bin/zsh setopt monitor for i in {1..10}; do sleep 1 & jobs | wc -l jobs done # => wc の結果はジョブの個数が表示される ```