Makeファイルのコマンド行で "<( )" によるプロセス置換を使いたい


以下のようなコマンドをMakeファイルで使用したいと思います。  
括弧をどのようにエスケープすれば良いですか？

[code]

    target: a.txt b.txt
        diff <(head a.txt) <(head b.txt) > target
    
[/code]




@metropolis さんも書かれていますが、`<()` がうまく動いていないのは make から起動されるシェルが `/bin/sh` になっていて、
bash の機能であるプロセス置換を認識できないからです。また、 diff は差分を検出すると、異常終了する仕組みになっているので、そのまま recipe
に記載すると、 diff があった時点で make が abort してしまいます。

[code]

    SHELL = /bin/bash    
    
    target: a.txt b.txt
        diff <(head a.txt) <(head b.txt) > target || :
    
[/code]

ですで、上記のようにすると、期待する動作になると思います。

  1. shell に `/bin/bash` を明示的に指定
  2. diff の実行結果を、何もしないコマンド(`:`) でもって捨て去る。




@metropolis さんも書かれていますが、`<()` がうまく動いていないのは make から起動されるシェルが `/bin/sh` になっていて、
bash の機能であるプロセス置換を認識できないからです。また、 diff は差分を検出すると、異常終了する仕組みになっているので、そのまま recipe
に記載すると、 diff があった時点で make が abort してしまいます。

[code]

    SHELL = /bin/bash    
    
    target: a.txt b.txt
        diff <(head a.txt) <(head b.txt) > target || :
    
[/code]

ですで、上記のようにすると、期待する動作になると思います。

  1. shell に `/bin/bash` を明示的に指定
  2. diff の実行結果を、何もしないコマンド(`:`) でもって捨て去る。

