ターミナルを使えてプログラミングできないなら、シェルスクリプトから始めよう
「黒い画面でバリバリ作業はできるのに、プログラミングとなるとちょっと・・・」みたいな人いますでしょうか。
grepとかcurlとかコマンドラインは得意なんだけど、オブジェクト思考とかメソッドとか変数とか抽象化とかそういうのになるとちょっと苦手という人。
そういう人こそ是非プログラミング学びましょう。この記事では、どうやっていくと心理的ハードルが低くなるかを書いていきます。
まずは動かす
まずは動けばよいでしょう。是非ローカルで実行してみてください。「bash ファイル名」とすれば実行できます。
#!/bin/bash echo "hello, world"
hello, worldでも。
#!/bin/bash grep "hogehoge" sample.txt
単なるgrepでもいいのです。とりあえず動かす。
終了ステータスを受け取って、if文で分岐
そしたら、次はちょっと込み入ったことをします。
#!/bin/bash grep "hoge" sample.txt exit_status=$? if [ "${exit_status}" -eq 0 ]; then echo "match" else echo "not match" fi
$?を使うと直前のコマンドの終了ステータスを受け取れるので、grepが成功したかどうかわかります。grepの場合はマッチしたら0、マッチしなかったら1なので、上記のようにしています。
関数化する
もしマッチしているかどうかの判断を何回もしないといけなくなったらどうでしょう。よくある例として、メールの送信だったり、LBのコマンド叩いたり、SSHでコマンド叩いたりするような、何度も繰り返される場合です。
そのために関数を使いましょう。
#!/bin/bash function grep_character() { local search_character="${1}" local file_name="${2}" echo "Search word: ${search_character}" grep "${search_character}" "${file_name}" EXIT_STATUS=$? if [ "${EXIT_STATUS}" -eq 0 ]; then echo "match" else echo "not match" fi } grep_character 'hoge' 'sample.txt' grep_character 'hogehoge' 'sample.txt'
例外を追加する
では、grepする対象のファイルが存在しなかったらどうするのでしょう。 シェバンに-eつければできますが、ここではif文でちゃんとやってみましょう。
#!/bin/bash function grep_character() { local search_character="${1}" local file_name="${2}" echo "Search word: ${search_character}" if [ ! -e "${file_name}" ]; then echo "not found: ${file_name}" exit 1 fi grep "${search_character}" "${file_name}" EXIT_STATUS=$? if [ "${EXIT_STATUS}" -eq 0 ]; then echo "match" else echo "not match" fi } grep_character 'hoge' 'sample.txt' grep_character 'hogehoge' 'sample.txt' grep_character 'hogehoge' 'sample2.txt'
だいぶ長くなってきました。ひとまずこれで希望の挙動となるでしょう。 プログラミングに不慣れな人はまずここぐらいまではやってほしいのです。
まとめ
そして、こういうのを繰り返していくと、例外処理を一つ一つやっていくのめんどいとか、関数が増えすぎてファイルが大きくなってしまったとか、いつも使いまわす値があるからいい感じで使いまわしたいとか、色々欲がでてきます。
そうなったらRubyやPythonとか使えばいいと思うのです。もちろん、最初からそれらを使える人がいるならそれが一番よいでしょうが。
いずれにしても、少しずつやってみて、こうしたいという欲望が叶えられる言語を選び、よりスキルを磨いて経験を増やしていく。
ぜひぜひ小さなところから初めて、1, 2年経ったら色々身についているという状態を達成してほしいと思います。
シェルスクリプトの書き方はシェルスクリプトを書く際に気を付けていること8箇条や、定期実行スクリプトの綺麗なロギング3選に詳しく書いてますので、ぜひぜひ読んでみてください。
また、参考書としてはシェルスクリプト基本リファレンスがオススメなので、是非読んでみてください!
ではでは!