Linux入門

シェルスクリプト入門【変数・条件分岐・ループ】

Linux入門
記事内に広告が含まれています。

「同じコマンドを毎回手で打つのが面倒…」そんなときに役立つのがシェルスクリプトです。bashシェルスクリプトの基本をゼロから解説します。

シェルスクリプトとは?

シェルスクリプトとは、シェル(bash等)のコマンドをファイルにまとめて自動実行する仕組みです。インフラエンジニアの日常業務で欠かせないスキルです。

基本構造と実行方法

シェルスクリプト基本構造
▲ シェバング・変数・if文の構造。= 前後スペースなし、[ 後ろスペース必須

変数の使い方

変数定義の = 前後にスペースを入れないことが最重要です。また変数参照には ${変数名} を使うと確実です。コマンド置換は $(コマンド) で行います。数値演算は $((式)) を使います。

条件分岐(if文)

if [ 条件 ]; then の形式で記述します。[ の後ろと ] の前にスペースが必須です。

if文の比較演算子
▲ 文字列比較は = と !=、数値比較は -eq -ne -lt -gt を使う。混同に注意

ループ(for・while)

for 変数 in リスト; do ~ done の形式でリストを繰り返します。数値の範囲には $(seq 1 5) を使います。while [ 条件 ]; do ~ done は条件が真の間繰り返します。

特殊変数(引数・終了ステータス)

シェルスクリプト特殊変数
▲ $? は直前のコマンドの終了ステータス(0=成功、1以上=エラー)

$1$9 はスクリプトへの引数、$# は引数の個数、$? は直前のコマンドの終了ステータスです。スクリプト冒頭で引数チェック(if [ $# -lt 1 ])を行う習慣をつけましょう。

安全なスクリプトを書く習慣

スクリプトが複雑になるほど、途中でエラーが起きたときに気づきにくくなります。以下のオプションをスクリプト冒頭に書く習慣をつけましょう。

#!/bin/bash
set -e          # エラーが起きたらスクリプトを即終了(続行しない)
set -u          # 未定義の変数を使ったらエラーにする
set -o pipefail # パイプの途中でエラーがあっても検知する

# 上の3つをまとめて書くこともできる
set -euo pipefail

特に set -e は重要です。これがないと、途中のコマンドが失敗してもスクリプトがそのまま実行し続け、意図しない動作を引き起こすことがあります。

まとめ

  • #!/bin/bash(シェバング)は1行目に必須
  • 変数の = 前後にスペースを入れない
  • if [ 条件 ][ 後ろにスペース必須
  • 数値比較は -eq/-lt/-gt、文字列比較は =/!=
  • $? で終了ステータスを確認(0=成功)
  • 実行前に chmod +x で権限付与

関連記事

cronで定期実行を自動化する

📋 Linux入門チートシート完全版で全コマンドを一気に復習できます。

コメント

タイトルとURLをコピーしました