シェルスクリプトマガジン

シェルスクリプトの書き方入門(Vol.67記載)

著者:大津 真

本連載ではシェルスクリプトの書き方をやさしく紹介します。対象とするシェルは、多くのLinuxディストリビューションが標準シェルとして採用する「Bash」です。第3回は、シェルスクリプトにおける条件分岐の使用方法を中心に解説します。

図1 シェルスクリプト「ping.sh」の内容

#!/bin/bash
if ping -c1 192.168.0.2 > /dev/null
then
  echo " 応答あり"
fi

図2 シェルスクリプト「secret1.sh」の内容

#!/bin/bash
secret=" ひらけごま"
echo -n " 合言葉は?: "
read aikotoba
if test $secret = $aikotoba; then
  echo " 正しい合言葉です!"
fi

図3 シェルスクリプト「secret2.sh」の内容

#!/bin/bash
secret=" ひらけごま"
echo -n " 合言葉は?: "
read aikotoba
if [[ $secret = $aikotoba ]]; then
  echo " 正しい合言葉です!"
fi

図4 シェルスクリプト「secret3.sh」の内容

#!/bin/bash
secret=" ひらけごま"
echo -n " 合言葉は?: "
read aikotoba
if [[ $secret = $aikotoba ]]; then
  echo " 正しい合言葉です!"
else
  echo " 合言葉が間違っています"
fi

図5 平成年を西暦年に変換するシェルスクリプト「heiseiToSeireki.sh」

#!/bin/bash
if [[ $# -eq 0 ]]; then
  echo " 平成年を指定してください"
  exit 1
fi
if [[ "$1" -lt 1 || "$1" -gt 31 ]]; then
  echo "1〜31 までの数値を入力してください"
  exit 1
fi
echo " 平成$1 年は西暦$(($1+1988)) 年"

図6 指定したファイル中のコロンをカンマに変換するシェルスクリプト「colon_to_comma.sh」

#!/bin/bash
fname=$1
cp "$fname" "${fname}~"
tr ":" "," < "${fname}~" > "$fname"

図7 引数チェック用のコードを追加した「colon_to_comma2.sh」

#!/bin/bash
if [[ $# -eq 0 ]]; then
  echo " 引数でファイルを指定してください"
  exit 1
fi
if [[ ! -f $1 ]]; then
  echo "$1 が見つかりません"
  exit 1
fi
fname=$1
cp "$fname" "${fname}~"
tr ":" "," < "${fname}~" > "$fname"