- 追加された行はこの色です。
- 削除された行はこの色です。
-とかく忘れがちなシェルプログラミングの文法などのまとめ
#contents
*sh [#m41416fa]
-bashとかは便利だけど常に入っているとは限らない。どこでも使えるshで組むのが基本
**注意事項 [#v5834160]
*注意事項 [#v5834160]
スペースの有無でエラーになったりするので注意
たとえばif文は
-これはOK
if [ $# -ne 2 ]; then
-これはNG
if [ $# -ne 2]; then
*引数の処理 [#j2ee8047]
**引数を取得 [#qa0fe686]
引数は順番に$1,$2,$3・・・・と取得できる
-一つ目の引数を表示
echo $1
**コマンド引数チェック [#na889800]
-2個でなかった場合使用方法を表示して抜けるサンプル
if [ $# -ne 2 ]; then
echo "利用方法 $0 引数1 引数2"
exit
fi
**変数の長さ [#q2e8e481]
${#変数名}
${#変数名}
**繰り返し処理 [#v9cf52d9]
*繰り返し処理 [#pe2c0147]
**繰り返し処理 基本 [#xa1ee348]
-a b cを一行ずつ表示する
for FILE in a b c
do
echo ${FILE}
done
**繰り返し処理 コマンド実行結果[#v9cf52d9]
TARGET_FILES=`ls *`
for FILE in ${TARGET_FILES}
do
echo ${FILE}
done
-複数の決まっているファイルを処理したい場合は"a b c"の様に空白で区切って入れる。
**繰り返し処理応用バージョン ファイルの中身を読み込んで処理 [#uc4c1e0a]
for filename in `cat ファイル名`
do
echo $filename
done
**if文 [#cfe30026]
*if文 [#cfe30026]
-ファイルが存在したらその中身を変数に入れる
if [ -f $RESULT ]; then
PRE_RESULT=`cat $RESULT`
fi;
-ファイルが存在しない場合のチェック
if [ ! -f $RESULT ]; then
PRE_RESULT=`cat $RESULT`
fi;
-ディレクトリ存在チェック、なければ処理をしない
if [ ! -d "/var/tmp" ]; then
echo "/var/tmp does not exist!"
return
fi
**コマンドを実行してリターンコードの判定例 [#c56d26a1]
-lsを実行して失敗したらメッセージを出す例
ls hoge
if [ $? -ne 0 ]; then
echo "ERROR!!"
exit
fi;
**コマンド引数チェック [#na889800]
-2個でなかった場合使用方法を表示して抜けるサンプル
if [ $# -ne 2 ]; then
echo "利用方法 $0 引数1 引数2"
exit
fi
*関数(サブルーチン、プロシージャ)の定義 [#i18840e1]
**関数(サブルーチン、プロシージャ)の定義 [#i18840e1]
# 引数は$1,$2でつかえる。呼び出し前に定義しておく必要がある。
doCheck() {
echo $1
}
# 呼び出しは関数名と引数をスペース区切りで
doCheck "hogehogehoge"
*その他 [#l7a527c4]
**ファイルに日付時刻の接尾語をつける。 [#w7c8d094]
SUFFIX=` date '+%Y%m%d%H%M%S'`
echo "TEST" > hoge_${SUFFIX}
#counter