シェルスクリプト基本
ざっくり基本編ということで。
関数とか続きは、次回へ。
シェルスクリプト
複数の処理をまとめて行う(バッチ処理)ときに使われる、OSのシェルが直接解釈・処理できるスクリプト。
シェルとは、ユーザの操作を受け付けて、与えられた指示をOSの中核部分に伝えるソフトウェア。
基本
#! /bin/sh
1行目に書く
PARAM="string" echo $PARAM echo "PARAMは ${PARAM}"
変数代入、参照
変数をセットする際に=の前後にはスペースをいれてはいけない
echo `date '+%Y-%m-%d'`
コマンドの場合、``で囲む
$# 引数の個数 $@ 全引数リスト $? 最後に実行したコマンドの戻り値 $0 ファイル名 $1~ 第1引数~の値
特殊な変数
echo "a = `expr 5 + 5`"
計算する場合、exprコマンドを使用する
制御構造
if [ 条件式1 ] then 条件式1が真の時の処理 elif [ 条件式2 ] then 条件式2が真の時の処理 else すべての条件式が偽の時の処理 fi
[]の前後に半角スペースを入れる
case $a in *.txt) echo "テキストです" ;; *) echo "知らない" ;; esac
;;でcase文を抜ける
for var in a b c do echo $var done
リストに対しての繰り返し
while [ 条件 ] do コマンド done
条件が真の場合、繰り返す
count=11 until [ $count -eq 0 ] do count=`expr $count - 1` if [ `expr $count % 2` -ne 0 ] then continue 2 else echo $count fi if [ $count -eq 4 ] then break 1 fi done
条件が偽の場合、繰り返す。continueとbreakも追加
比較
if文やwhile文などで使う
数値評価演算子 | 真になる場合 |
---|---|
$a -eq $b | 等しい |
$a -ne $b | 異なる |
$a -gt $b | $aより$bが大きい |
$a -lt $b | $aより$bが小さい |
$a -ge $b | $aが$bより大きいか等しい |
$a -le $b | $aが$bより小さいか等しい |
文字列評価演算子 | 真になる場合 |
---|---|
$s | 長さが0より大きい |
! $s | 長さが0 |
$s = $t | 等しい |
$s != $t | 等しくない |
論理結合演算子 | 真になる場合 |
---|---|
! hoge | hogeが偽 |
hoge -a fuga | hogeとfugaが真 |
hoge -o fuga | hogeもしくはfugaが真 |
ファイルチェック演算子 | 真になる場合 |
---|---|
-d $a | ディレクトリ名 |
-f $a | ファイル名 |
-L $a | シンボリック |
-r $a | 読み取り可能ファイル |
-w $a | 書き込み可能ファイル |
-x $a | 実行可能ファイル |
-s $a | サイズが0より大きい |
$a -nt $b | $aが$bより新しい |
$a -ot $b | $aが$bより古い |
勉強やりかけのものも、進めなければ…。