-とかく忘れがちなシェルプログラミングの文法などのまとめ

#contents

-bashとかは便利だけど常に入っているとは限らない。どこでも使えるshで組むのが基本

*注意事項 [#v5834160]

スペースの有無でエラーになったりするので注意
たとえばif文は

-これはOK

 if [ $# -ne 2 ]; then

-]の前にスペースがなく、これだけでNG

 if [ $# -ne 2]; then

*引数の処理 [#j2ee8047]

**引数を取得 [#qa0fe686]

引数は順番に$1,$2,$3・・・・と取得できる

-一つ目の引数を表示

 echo $1

**コマンド引数チェック [#na889800]

-引数のNULLチェック

 # nullだったら実施するパターン
 if [ ! $1 ]; then
 	echo "PLEASE INPUT ARGUMENTS!"
 fi;



-2個でなかった場合使用方法を表示して抜けるサンプル

 if [ $# -ne 2 ]; then
        echo "利用方法 $0 引数1 引数2"
        exit
 fi


**変数の長さ [#q2e8e481]

 ${#変数名}

*繰り返し処理 [#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 [ -f $RESULT ]; then
    echo "TRUE" 
  else
    echo "FALSE"
  fi;

-文字列比較

 if [ $STR = "比較対象" ]; then


-ファイルが存在したらその中身を変数に入れる

 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

-複数条件

 if [ ! -d "/var/tmp" -o ! -d "/var/tmp2" ]; then
    echo "/var/tmp or /var/tmp2 do not exist!" 
    return 1
 fi


*case文 [#yf89cecd]

-キーから文字を読み込んで分岐させる処理、Javaと違ってcaseの内部でbreakは不要。

 #!/bin/bash
 # read key input from stdin
 read key
 # do command
 case "$key" in
    "1" ) echo "statement1"
          echo "statement2";;
    "2" ) echo "end sign is ;;";;
    *) echo "一致するものがないときはここ"
          break ;;
 esac

**コマンドを実行してリターンコードの判定例 [#c56d26a1]

-lsを実行して失敗したらメッセージを出す例

 ls hoge
 if [ $? -ne 0 ]; then
    echo "ERROR!!"
    exit
 fi;



*関数(サブルーチン、プロシージャ)の定義 [#i18840e1]

 # 引数は$1,$2でつかえる。呼び出し前に定義しておく必要がある。
 doCheck() {
        echo $1
 }
 # 呼び出しは関数名と引数をスペース区切りで
 doCheck hogehogehoge fugafuga

-関数だけ作ったファイルを外だししておくと便利。呼び出すにはsourceを使う

source ./function.sh

*その他 [#l7a527c4]

**ファイルに日付時刻の接尾語をつける。 [#w7c8d094]

 SUFFIX=` date '+%Y%m%d%H%M%S'`
 echo "TEST" > hoge_${SUFFIX}

-フォーマットするなら以下のようにする(ファイル名には不適切かも)

 date '+%Y-%m-%d %H:%M:%S'

#counter

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS