シェルスクリプトの基本(演習ヒント)

シェルスクリプトの基本(演習ヒント)

 シェル変数 と 環境変数
(ローカル変数)(グローバル変数)

exportコマンドで環境変数は作成する

readコマンド 標準入力から変数にデータを読み込む

setコマンド シェル変数を表示する
      set | grep ^abc
unsetコマンド シェル変数を削除する

envコマンド 環境変数を表示する

unsetコマンド 環境変数も削除できる


引用符

' " `  3つあります

':$参照用の指定があっても変数は展開されない
":$参照用の変数は展開される
`:$参照用の変数は展開されコマンドが実行される


引数

シェルスクリプトも引数をとれる
引数は $1,$2......

$1-$3 は引数
$0 は実行コマンド名
$#は引数の数を示す


shiftコマンド

引数の順序をずらす
$2 → $1,$3 → $2


エスケープシーケンス

\nを有効にしたいときはエスケープ解釈オプション
echo -e "aaa \n bbb"


sourceコマンド

現在実行中のシェル(bash)の環境でシェルスクリプト内の
コマンドを実行する


【条件分岐】

●if文

if [条件式]; then  (thenの前のスペースを忘れないで)
.............
elif [条件式]; then
.............
else
.............
fi

文字列比較 == !=
数値比較  -eq -ne -ge -le -gt -lt

ファイルの属性判断

if test -d /etc/passwd ; then
...... ↑testコマンドのオプション指定
fi    ディレクトリ?


or論理和 || [条件 A] || [条件 B] || [条件 C] ...

and論理積 && [条件 A] && [条件 B] && [条件 C] ...

○実行例

#!/bin/bash
echo -n "数値を入力"
read num
if [ $num -lt "0" ];
then
  echo "負の数です"
elif [ $num -gt "0" ];
then
  echo "正の数です"
else
  echo "0です"
fi


●CASE文

case 変数 in
 値 A)
  処理 1;;
 値 B)
  処理 2;;
 *)
  デフォルトマッチ;;
esac

○実行例

#!/bin/bash
case $1 in
 a|A)
  echo "引数に a または A が入力されました";;
 b|B)
  echo "引数に b または B が入力されました";;
esac



【繰り返し】

●for文

for 変数 in 値のリスト
do
 処理
done

値のリストとは、文字を羅列したものもあれば、実行結果を使うこともできます。

○実行例

#!/bin/bash
for i in a b c d
do
echo $i
done


●while文

while 条件式
do
 処理
done


C 言語の for のようなループ文をシェルスクリプトで実現するには、expr コマンドを用いてルー
プカウンタ用の変数をインクリメント(またはデクリメント)しながら、while/until 文で処理を行
ないます。

○実行例

#!/bin/bash
count=1
while [ $count -le 10 ]
do
 echo "この処理は$count 回実行されました"
 count=`expr $count + 1`
done


●select 文
select 文は、ユーザに対し数値による入力を促します。
書式
select 変数 in リスト
do
 処理
done


break や continue を用いることで、繰り返しを制御することができます。break は繰り返しを終
了して、continue は繰り返しの先頭に戻る役割があります。

○実行例

#!/bin/bash
while true
do
 echo "Continue? (y/n)"
 read input
 case $input in
  n) break
    ;;
  y) continue
    ;;
  *) echo "Please input y or n."
    ;;
 esac
done