シェルスクリプトの基本(演習ヒント)
シェル変数 と 環境変数
(ローカル変数)(グローバル変数)
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