プログラマでありたい

おっさんになっても、プログラマでありつづけたい

BShellの書き方

3日書かないと、すぐ忘れるのでメモ ← ボケ老人

1.特殊変数
 $? 直前に実行したコマンドの帰り値
 $n スクリプトに渡された n番目の引数 (9個まで)
 $# 引数の個数(引数がない場合は0)  
 $$ シェル自身のプロセスID  
 $! シェルが最後に起動したバックグラウンドプロセスのプロセスID
 $- シェルの起動時のフラグ、setコマンドを使って設定したフラグの一覧  
 $* 全引数リスト。全引数がまとめてダブルクォートに囲まれる。"$1 $2 … $n"
 $@ 全引数リスト。引数一つ一つがダブルクォートで囲まれる。"$1" "$2" … "$n"

 最初の3つを覚えていれば、95%事足りる。

2.関数の作り方
 書式
  関数名() {
       処理
  }
 引数
  $n
 サンプル
  #!/usr/bin/sh
  MyFunc() {
       echo "引数:$1"
  }
  MyFunc arg1

3.制御構文
 <b>if文</b>
  if [ $1 = "hoge" ]; then
    処理
  elif [ $1 = "fuge" ]
    処理
  else
    処理
  fi

 <b>for文 </b>
  for str in `cat /tmp/file`
  do
      echo $str
  done

 <b>while文 </b>
  i=1
  while [ $i -lt 3 ]
  do
      echo "i = $i"
      i=`expr $i + 1`
  done


4.条件式の書き方
  文字列評価
   =  両辺の文字列が一致したとき真 
   !=  両辺の文字列が一致しないとき真 
   -n 変数 変数がnullでないときに真 
   -z 変数 変数がnullのときに真 

  数値評価
   -lt より小さい 
   -le 以上 
   -eq 等しい 
   -ge 以上 
   -gt より大きい 
   -ne 等しくない 

  ファイル属性評価
   -d file fileが存在してディレクトリのとき真 
   -e file fileが存在するとき真 
   -f file ファイルが存在し普通のファイルのとき真 

  論理演算子
   -a  かつ 
   -o  または