本文へスキップ

シェルスクリプト入門。未経験が最初の1本を書けるようになるまでの手順

#シェルスクリプト#Linux#初心者#未経験#インフラ学習

シェルスクリプトは、未経験からインフラエンジニアを目指す人が「そろそろ書いてみたい」と感じつつ、何から手をつければいいか分からず後回しにしがちな分野です。結論から言うと、最初の1本は10行に満たない短いスクリプトで十分で、コマンドを1つずつ手で打つ代わりにファイルへまとめて実行するというだけの話から始められます。この記事では、シェルスクリプトとは何か、書く前に知っておきたい基本、最初の1本の書き方、つまずきやすいポイントまでを順番に解説します。

シェルスクリプトとは何か。何のために書くのか

シェルスクリプトとは、普段ターミナルで打っているLinuxコマンドを、実行したい順番でテキストファイルに書き並べたものです。ファイルを実行するだけで、複数のコマンドがまとめて動きます。

現場で書く目的は主に次の3つです。

  • 自動化: バックアップ取得、ログの整理、定期チェックなど、毎回同じ手順を繰り返す作業を1コマンドに圧縮する
  • 手順の固定化: 手順書の「この順番でこのコマンドを打つ」を、打ち間違えの起きないファイルとして固定する
  • 記録: 何をどう実行したかがファイルとして残るため、後から見返せる

現役でインフラの現場にいる立場から言うと、監視運用の手順書がシェルスクリプト化されている現場は多く、「読める・直せる」だけでも仕事の幅が変わります。最初から複雑な自動化ツールを書く必要はなく、まずは読めることを目標にするのが現実的です。

最初の1本を書く前に知っておくこと

書き始める前に、次の基本だけ押さえておけば十分です。

  • シバン行: ファイルの1行目に#!/bin/bashと書き、bashで実行することを宣言する
  • 拡張子: .shをつけるのが慣習だが、実行自体には必須ではない
  • 実行権限: 作成したファイルは実行権限がないため、chmod +xで権限を付与する。ここでつまずく人は多く、原因はPermission deniedの直し方で詳しく解説している
  • 変数: NAME="value"で代入し、使うときは$NAMEと書く(=の前後にスペースを入れると動かない点に注意)
  • コマンドの結果を使う: ` command または$(command)`でコマンドの出力を変数に入れられる

これだけ知っていれば、最初の1本を書き始められます。

最初の1本「ディスク使用率を確認するスクリプト」を書いてみる

監視現場でも使われる、ディスク使用率を確認して結果を表示するだけの短いスクリプトを例にします。

#!/bin/bash
USAGE=$(df -h / | awk 'NR==2 {print $5}')
echo "ルート領域の使用率: $USAGE"

書いたら、次の手順で動かします。

  1. disk_check.shという名前でファイルを保存する
  2. chmod +x disk_check.shで実行権限を付ける
  3. ./disk_check.shで実行する

このように、最初の1本は「コマンド1〜2個の出力を整形して表示するだけ」のレベルで構いません。ここから条件分岐(if)を足して「使用率が80%を超えたら警告を出す」のように育てていくのが、無理のない進め方です。

つまずきやすいポイントと直し方

最初につまずくポイントはほぼ共通しています。整理すると次のとおりです。

症状よくある原因対処
Permission denied実行権限が付いていないchmod +x ファイル名を実行する
command not foundコマンド名やパスの誤り、PATHが通っていないスペルを確認し、フルパス指定を試す
変数が空のまま表示される=の前後にスペースがあるNAME=valueのようにスペースを詰める
シバン行の書き忘れ1行目に#!/bin/bashがない1行目に必ずシバン行を書く

いずれも、初めて書くときにほぼ全員が一度は通る内容です。エラーメッセージをそのまま検索する習慣をつけておくと、原因の切り分けが早くなります。

学ぶ順番とInfraDojoでの練習方法

シェルスクリプトは、Linuxの基本コマンドが手に馴染んでから取り組むほうがスムーズです。コマンド単体の意味が分からないままスクリプトを書くと、エラーの原因がコマンドの問題なのかスクリプトの書き方の問題なのか切り分けられなくなるためです。まだコマンドに不安がある場合は、Linuxコマンドは暗記しない。未経験が最初に覚える20個から始めるのがおすすめです。

InfraDojoなら、ブラウザ上のLinux環境でスクリプトを実際に作成・実行しながら学べるため、自分のPCの環境を壊す心配なく試行錯誤できます。学習の全体像はインフラキャリアロードマップ(Linuxコース)にまとまっているので、シェルスクリプトを学ぶ位置づけを確認したい人は参考にしてください。会員登録は30秒で終わり、最初のコースは無料で試せます。

よくある質問

Q. シェルスクリプトはどのくらい書ければ転職活動で通用しますか?

未経験の転職活動では、複雑な自動化ツールを書ける必要はありません。ディスク・プロセス・ログの状態を確認して表示する程度のスクリプトを自分で書いて説明できれば、学習意欲と基礎理解のアピールとして十分機能します。量より、書いた内容を自分の言葉で説明できるかが重要です。

Q. bashとshの違いが分からず不安です。

未経験の学習段階では、bashだけを対象にして問題ありません。現場ではbash前提のスクリプトが大半で、シバン行に#!/bin/bashと書いておけば意識する必要はほぼないです。sh固有の違いは、現場でshスクリプトに触れたタイミングで調べれば十分間に合います。

Q. エラーが出るたびに心が折れそうになります。

シェルスクリプトの学習は、エラーを出しては直すの繰り返しが前提の分野です。むしろエラーメッセージを読んで原因を切り分ける経験こそが、現場で評価される力に直結します。1つずつ潰していけば、数週間で「大体の原因は見当がつく」状態になります。

Reo|インフラエンジニアのアイコン

この記事を書いた人: InfraDojo運営者(Reo|インフラエンジニア)

現役インフラエンジニア。SESの現場経験に基づき、未経験からのインフラ転職と学習を支援しています。InfraDojoは、ブラウザ上のターミナルで実際に手を動かして学べるインフラ学習サイトです。

@Reo_engineer_

読むだけで終わらせず、今日から手を動かす

InfraDojoは、ブラウザを開くだけでLinux・ネットワーク・AWSの演習ができる学習サイトです。登録は30秒、最初のコースは無料です。