①Linux入門

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

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

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

シェルスクリプトとは?

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

基本構造と実行方法

変数の使い方

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

条件分岐(if文)

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

ループ(for・while)

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

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

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

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

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

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

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

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

シェルスクリプト基本構造

要素書き方説明
シェバン#!/bin/bash1行目必須
変数代入name=”value”=前後スペース不可
変数参照$name または ${name}文字列が続く場合は${}
コマンド実行結果result=$(コマンド)出力を変数に代入

if文の比較演算子

演算子意味
-eq等しい(数値)
-ne等しくない
-gtより大きい
-ltより小さい
-ge以上
-le以下
=文字列が等しい
-fファイルが存在する
-dディレクトリが存在する
-z変数が空

特殊変数一覧

変数意味
$0スクリプト名

まとめ

〜$9
引数
$#引数の個数
$@全引数リスト
$?直前の終了コード
$現在のPID

まとめ

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

関連記事

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

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

コメント

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