Bashメモ

  • ディレクトリ一覧
find . -type d |sed 's!^\./!!'
  • 日付を表示
date +\%Y\%m\%d
  • 配列 と forループ
AA=(aa bb cc dd ee)

for a in ${AA[@]}; do
	echo $a
done

1行で。
for d in `ls`; do コマンド; done
for i in `seq 1 10`; do mysql -e "select count(*) as foo_$i from foo_$i.foo_table"; done
for i in `seq --format='%02g' 1 10`; do echo $i; done
for i in `seq --format='%02g' 2 2 20`; do echo $i; done
  • if文
DOMAINS=`ls | sort`

for d in ${DOMAINS[@]}; do
        if [ -d $d ] && [ $d != www ] && !( [ -d company ] && [ -d info ] )
        then
                cd $d
                echo `pwd`
                ls
                cat access_log.1 | zip > access_log.20070206.zip
                cd ..
        fi
done

1行で。
if [ -d ディレクトリ ]; then コマンド; fi
if [ -d ディレクトリ ]; then コマンド; else コマンド; fi
if [ -d ディレクトリ ]; then コマンド; elif [ -d ディレクトリ ]; then コマンド; else コマンド; fi

  • サンプル

サイズが0のファイルをリストする

for i in `ls`; do if ! [ -s $i ]; then echo $i; fi done
  • ファイルと標準出力の両方に出力

コマンドの出力を画面を見ながらファイルに出力したい場合

# command | tee output_file
  • 四則演算、算術計算

expr コマンドを使う。各トークンは、スペースで区切る。

足し算

# a=100
# b=200
# echo `expr $a + $b`
300
# echo $(($a+$b))
300

引き算

# echo `expr $a - $b`
-100
# echo $(($a-$b))
-100

かけ算
「*」を使うが、「*」はシェルで別の意味を持つので「\」でエスケープする。

# echo `expr $a \* $b`
20000
# echo $(($a * $b))
20000

わり算

# echo `expr $a / $b`
# echo $(($a / $b))
0
# echo `expr $a % $b`
# echo $(($a % $b))
100

括弧の使い方

# echo `expr \( $a + $b \) \* 15`
4500
# echo $(( ($a + $b) * 15))
4500
  • 乱数
# echo $[RANDOM % 10]
# echo $[RANDOM % 10+100]