導入
「バックアップを取って、ログを整理して、結果を表示する」。この3つを毎日手で打つと、いつか順番を間違えます。人がやると間違える作業は、書き留めて機械に任せるのが正解です。シェルスクリプトは、その一番手軽な入口です。
説明
シェルスクリプトとは、シェルに打つコマンドを、そのままの順番でファイルに並べたものです。特別な言語を覚える必要はありません。あなたが端末で打ってきた echo・ls・cp・grep が、そのまま部品になります。
flowchart LR
A["手で1コマンドずつ打つ<br/>(速いが、毎回・間違える)"] --> B["ファイルに並べる<br/>script.sh"]
B --> C["sh script.sh<br/>(いつでも同じ結果)"]
C --> D["cron で定期実行<br/>(人がいなくても動く)"]
上のエディタが、いまあなたが書いているスクリプトです。中身はたったこれだけ。
#!/bin/bash
echo "おはようございます"
echo "今日の日付: $(date +%Y-%m-%d)"
echo "作業を開始します"
3行の echo が、上から順に実行されます。スクリプトの実行順は、書いた順。これがすべての土台です。
$(date +%Y-%m-%d) は「date コマンドを実行して、その結果をここに埋め込む」という書き方です(第2章で詳しく扱います)。手で打つときと同じコマンドが、そのまま部品として使えることを感じてください。
なぜファイルにするのか。理由は3つあります。
- 再現できる: 同じ手順が、何度でも・誰がやっても同じ結果になる。
- 共有できる: 手順書ではなく「動く手順」をチームに渡せる。
- 自動化できる:
cron(第8章)に登録すれば、人が寝ていても動く。
やってみよう
上のエディタの中身を確かめたら、「▶ 実行」ボタンを押してください(下の端末で sh script.sh と打っても同じです)。3行が上から順に表示されます。次に、4行目として echo "作業を終了します" を書き足して、もう一度実行してみましょう。書き足した行が、最後に増えることを確かめてください。
演習
スクリプトの最後に echo "作業を終了します" を追加して実行し、その行を画面に出してください。
ヒント1を見る
エディタの一番下に、新しい行として echo "作業を終了します" を書き足します。
ヒント2を見る
書いたら「▶ 実行」ボタン(または端末で sh script.sh)。