if [ 条件1 ]
then
処理1
elif [ 条件2 ]
then
処理2
else
処理3
fi
case 変数 in
パターン1) 処理;;
パターン2) 処理;;
パターン3 | パターン4) 処理;;
*) 処理;;
esac
「;;」は「case文を抜ける」という意味です。
「*)」は「いずれのパターンにもあてはまらない場合」という意味で、省略可能です。
パターンを「 | 」で区切って論理和(or)をとることもできます。
また、パターンには正規表現が使えます。
while [ 条件 ]
do
処理
done
ファイルを1行毎に読み込んで処理させたい場合は、以下のような構文になります。
「line」は変数であり、指定したファイルを1行毎に読み込んで順次「line」に格納されます。
ファイルの終端(EOF)まできたら「while」を抜けます。
while read line
do
処理(${line}を処理)
done < ファイル
算術演算子 意味
a + b aとbの和
a - b aとbの差
a \* b aとbの積
a / b aとbの商
a % b aとbの剰余
数値評価演算子 意味
数値1 -eq 数値2 数値1と数値2が等しい場合に真
数値1 -ne 数値2 数値1と数値2が等しくない場合に真
数値1 -gt 数値2 数値1が数値2より大きい場合に真
数値1 -lt 数値2 数値1が数値2より小さい場合に真
数値1 -ge 数値2 数値1が数値2より大きいか等しい場合に真
数値1 -le 数値2 数値1が数値2より小さいか等しい場合に真
文字列評価演算子 意味
文字列 文字列の長さが0より大きければ真
-n 文字列 文字列の長さが0より大きければ真
! 文字列 文字列の長さが0であれば真
-z 文字列 文字列の長さが0であれば真
文字列1 = 文字列2 2つの文字列が等しければ真
文字列1 != 文字列2 2つの文字列が等しくなければ真
ファイルチェック演算子 意味
-d ファイル名 ディレクトリなら真
-f ファイル名 通常ファイルなら真
-L ファイル名 シンボリックリンクなら真
-r ファイル名 読み取り可能ファイルなら真
-w ファイル名 書き込み可能ファイルなら真
-x ファイル名 実行可能ファイルなら真
-s ファイル名 サイズが0より大きければ真
ファイル1 -nt ファイル2 ファイル1がファイル2より新しければ真
ファイル1 -ot ファイル2 ファイル1がファイル2より古ければ真
if文やwhile文で、複数の条件を結合(AND,OR)して評価したい場合は、以下のように記述します。
論理結合演算子 意味
! 条件 条件が偽であれば真
条件1 -a 条件2 条件1が真、かつ、条件2が真であれば真
条件1 -o 条件2 条件1が真、または、条件2が真であれば真
#!/bin/sh
while getopts l:t: opt
do
case ${opt} in
l)
LIST=${OPTARG};;
t)
TYPE=${OPTARG};;
\?)
exit 1;;
esac
done
echo "LIST=${LIST}"
echo "TYPE=${TYPE}"
↓
$ getopts.sh -l list -t type
LIST=list
TYPE=type
$
ファイルの内容をクリアする。
cat /dev/null > abc.log
または、
:> abc.log
PARA2=string
echo "PARA2 = ${PARA2}"
変数 意味
$$ シェル自身のPID(プロセスID)
$! シェルが最後に実行したバックグラウンドプロセスのPID
$? 最後に実行したコマンドの終了コード(戻り値)
$- setコマンドを使って設定したフラグの一覧
$* 全引数リスト。"$*"のように「"」で囲んだ場合、"$1 $2 … $n" と全引数を一つにくっついた形で展開される。
$@ 全引数リスト。"$@"のように「"」で囲んだ場合、"$1" "$2" … "$n" とそれぞれの引数を個別にダブルクォートで囲んで展開される。
$# シェルに与えられた引数の個数
$0 シェル自身のファイル名
$1~$n シェルに与えられた引数の値。$1は第1引数、$2は第2引数…となる。
rem 不要なファイルを再帰的に検出して削除
for /F "usebackq" %%i in (`dir /s /b /a-D ^| findstr /V ".*\.html$" ^| findstr /V ".*\.css$" `) do (
rem 削除確認しながら削除
del /P %%i
)
rem ファイルがあれば削除
if exist %TMP_FILE_NAME% ( del %TMP_FILE_NAME% )
rem カレントフォルダを変数に保持
for /F "usebackq" %%i in (`cd`) do (
set BAT_DIR="%%i"
)
rem 変数の内容を表示
echo %BAT_DIR%
set today_YYYYMMDD=%date:~0,4%%date:~5,2%%date:~8,2%
set now_HHmmSS=%time:~0,2%%time:~3,2%%time:~6,2%
スリープ
5秒待つ:
ping localhost -n 5 > nul
0 件のコメント:
コメントを投稿