parallelとcurlでjsonをPOSTする

APIを複数処理する必要が出てきて、parallelやxargsを使う方法が思いついた. ただcurljsonをpostする場合、-dオプションをつけてbodyを指定する。 そのbody中のjsonを表現する',"の扱いが分からなかったため備忘録として残す.

$ cat id_list
123
456
789
cat id_list | parallel -j 1 curl -X POST -H \'Content-Type: application/json\' -H \'Authorization: Bearer $TOKEN\' -d \'\{\"id\":\"{}\",\"force\":true\}\' \"https://myurl\"

デバッグの仕方

parallelに-vオプションをつけると、parallelがどう解釈したか表示されるため、このオプションを使う。 parallelの-vオプションの他に、curl-vオプションをつけても良い