シェルスクリプト
Table of Contents
引数
引数を参照するシェル変数は9つまで使うことができる. ( $1, $2, ... $9 )
変数の代入
※"="との間にスペースを入れるとNG i=1 echo $i test="abc" test2=$test echo $test
if文
if [ "$1" = 2 ]; then echo test; fi
while文
while read LINE do echo $LINE done
文字列操作
while read LINE do echo ${LINE:2} # offset=2の位置から 変数LINE の終りまでのサブ文字列が返される. done
変数(数値)のインクリメント
n=`expr $n + 1`
変数に対するパターンマッチ
${変数#パターン} 変数の内容について、最初の部分とパターンがマッチしたら、最も短く一致する部分を取り除いた残りの部分を返す。 ${変数##パターン} 変数の内容について、最初の部分とパターンがマッチしたら、最も長く一致する部分を取り除いた残りの部分を返す。 ${変数%パターン} 変数の内容について、最後の部分とパターンがマッチしたら、最も短く一致する部分を取り除いた残りの部分を返す。 ${変数%%パターン} 変数の内容について、最後の部分とパターンがマッチしたら、最も長く一致する部分を取り除いた残りの部分を返す。
特殊な変数
$# 引数の数 $0 コマンド名 $1, $2, ... $9 第1,第2,…第9引数 $* 引数列 $@ 引数列 $? 最後に実行したコマンドの戻り値 $$ 現在のシェルのプロセス番号 $! 最後に実行したバックグラウンドコマンドのプロセス番号 $- シェルフラグの現在の設定状態(起動時や、set コマンドで得られたオプション)
dateコマンド
日付でファイル名を作成する 例えば今日が 2005/05/23 だったら、 $ touch test`date '+%y%m%d'` で test050523.txt というファイルが作成される $ touch test`date --date '1 day' '+%y%m%d'` で test050524.txt というファイルが作成される $ touch test`date --date '1 day ago' '+%y%m%d'` で test050522.txt というファイルが作成される