Slack へ通知するシェルスクリプト
プログラマーの君! 騙されるな! シェルスクリプトはそう書いちゃ駄目だ!! という話 - Qiita を読み、シェルスクリプトで関数へ値を渡す際は 引数よりも標準入出力を使ったほうがシンプルに書けるようだったので、 以前書いた Slack へ通知メッセージを送るスクリプトを書き直してみた。
#!/bin/bash
WEBHOOK_URL=https://hooks.slack.com/services/xxxxxxxxxxx/xxxxxxxxxxx/xxxxxxxxxxxxxxxxxxxxxxxx
post_slack() {
echo "payload={\"text\": \"$(cat)\"}" | curl -s -S -X POST -d @- ${WEBHOOK_URL}
}
echo "<!here>\nhoge\nfuga" | post_slack
post_slack では以下のかたちで処理している。
- cat で標準入力から取り込んだ文字列を echo で結合し JSON を作成する。
- それをパイプで curl へ渡す。
- curl では
-d @-
で標準入力から取り込んだ文字列を POST する。
標準入出力をパイプで繋ぐかたちとすることで、 以前は10行あった post_slack が3行に短縮された。