読者です 読者をやめる 読者になる 読者になる

「bash」変数への代入、if 文、for 文、関数呼び出しメモ

bash

bash で変数への代入、if 文、for 文、関数呼び出し等々するシェルスクリプトを書いてみました。
Web を検索するたくさんいい情報が出ている内容ですが、さっと取り出せるメモという感じです。

以下が今回作ったシェルスクリプトです。
case で引数を判定して処理を分ける感じにしています。

#!/bin/bash

# 呼び出し用の関数
testfunc() { #function testfunc() { でも OK
  echo "hello $1"
}

case $1 in
# 変数に代入して、変数を出力する
"echo" )
  var="echo test"
  echo $var #echo "$var" でも OK
  echo '$var' #シングルクォーテーションだと $var がそのまま出力される
;;

# if の比較
"if" )
  a=1
  b=1
  c=2
  if [ $a -eq $b ]; then
    echo "a = b"
  fi

  if [ $a -eq $c ]; then
    echo "a = c"
  elif [ $a -lt $c ]; then
    echo "a < c"
  else
    echo "else"
  fi
;;

# for での繰り返し処理
"for" )
  for i in a b c
  do
    echo $i
  done

  for i in {0..3} #for i in $(seq 0 3) とも書ける
  do
    echo $i
  done
;;

# ファイル、ディレクトリの存在判定
"filedir" )
  if [ ! -e ./aaa ]; then
    echo abcde > aaa
  fi

  if [ ! -e ./bbb ]; then
    mkdir bbb
  fi

  if [ -f ./aaa ]; then
    echo aaa is file
  fi

  if [ -d ./bbb ]; then
    echo bbb is directory
  fi
;;

# hello 関数を呼び出す
"func" )
  testfunc hoge
;;
esac


実行は以下の感じで ( chmod で実行権限を付与しておく )

[root@centos62 bash]# ./test.sh echo
echo test
$var
[root@centos62 bash]# ./test.sh if
a = b
a < c


非常に簡単ですが、以上になります。