#!/bin/sh
ARRAY=(aaa bbb ccc abc)
for ITEM in ${ARRAY[@]}; do
case $ITEM in
*c)
# ccc, abc
echo "cで終わる。"
;;
a*)
# aaa
echo "aで始まる。"
;;
*)
# bbb
:
;;
esac
done
あと、 if とか case の中で何もしたくない時は「:」を使う。
2013年12月16日月曜日
シェルで文字列比較
シェルで文字列比較をしたかったので。
再帰的にファイル数、ディレクトリ数を取得する
CentOSは1つのディレクトリに最大32000個までしかディレクトリを作れない。
でも作るシステムによってはテンポラリのディレクトリとかが溜まって危ないかもしれないのでチェックスクリプトを作ってみた。
でも作るシステムによってはテンポラリのディレクトリとかが溜まって危ないかもしれないのでチェックスクリプトを作ってみた。
#!/bin.sh
DIR=/home/hoge/
Seek(){
for ELEM in * ; do
if [ -d "$ELEM" ] ; then
# ファイルだけなら -type f
# ディレクトリだけなら -type d
CNT=`find "$ELEM" -maxdepth 1 -type d | wc -l`
if [ $CNT -ge 5000 ] ; then
# 5000個を超えているものだけ出力
PWD=`pwd`
echo "$PWD/$ELEM : $CNT"
else
# 5000個を超えていないディレクトリだけさらに再帰的に処理
(cd "$ELEM";Seek;)
fi
fi
done
}
2013年2月21日木曜日
シェルでコマンドの実行結果の確認
rsync -avz /home/user/source/ /home/user/dest/ >& /tmp/rsync.log if [ $? -eq 0 ]; then echo "成功" else echo "失敗" fi
シェルからpsql経由でSQL実行
#!/bin/sh DB_NAME='db_name' DB_RET=`psql -U postgres -c "SELECT COUNT'(*) FROM pg_database WHERE dat_name = '$DB_NAME'" postgres | cut -d" " -f3` echo $DB_RET
ラベル:
linux,
postgresql,
sh
登録:
投稿 (Atom)