bash プログラミング:if 文と case 文

bash には条件分岐として「if」文と「case」文がある。そこで今回は、それらについての文法などを解説する。


if 文

if 文の文法は次の通りである。

if list; then list; [ elif list; then list; ] … [ else list; ] fi

使用する条件文は終了ステータスを返すコマンドならば何でも良く、サブプロセスとして複数のコマンドを実行しても良い。

#!/bin/bash

if [ $# -lt 1 ];
then
echo “引数がありません。”;
elif ( echo $1 | gawk --re-interval ‘/^a/ { exit 0; } { exit 1 ;}’ );
then
echo “引数が「a」から始まっています。”;
else
echo “引数が「a」以外から始まっています。”;
fi

exit 0;
3.sh

上記の内容を「3.sh」として保存し、「chmod +x 3.sh」としてから実行。

$ ./3.sh
引数がありません。
$ ./3.sh a
引数が「a」から始まっています。
$ ./3.sh bc
引数が「a」以外から始まっています。
$

case 文

case 文の文法は次の通りである。

case word in [ [(] pattern [ | pattern ] … ) list ;; ] … esac

case 文で用いるパターン(正規表ではない)はファイルパターンに近く、「?」1文字に一致、「[0-9a-zA-Z]」英数字に一致、「*」すべての文字列に一致する。

また、「”」で囲むとパターンではなくなり、その文字そのものとなる。

!/bin/bash
if [ $# -lt 1 ];
then
echo “引数がありません。”;
exit 0;
fi
case $1 in
( a* )
echo “引数が「a」から始まっています。”;
echo “case 文から出ます”;
;;
( “*” ) #「*」という文字列に一致
echo “「*」という文字列に一致しました”;
echo “case 文から出ます”;
;;
( * )
echo “引数が「a」以外から始まっています。”;
echo “case 文から出ます”;
;;
esac

exit 0;
4.sh

上記の内容を「4.sh」として保存し、「chmod +x 4.sh」としてから実行。

$ ./4.sh a
引数が「a」から始まっています。
case 文から出ます
$ ./4.sh ‘*’
「*」という文字列に一致しました
case 文から出ます
$ ./4.sh bc
引数が「a」以外から始まっています。
case 文から出ます
$

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です