以下のように実行すると、実際に実行されたコマンドと変数に設定された値を確認できる。
$ bash -x test.sh
$ stat aaa File: `aaa' Size: 4 Blocks: 8 IO Block: 4096 通常ファイル Device: 806h/2054d Inode: 94404618 Links: 1 Access: (0664/-rw-rw-r--) Uid: ( 222/ adpsp) Gid: ( 222/ adpsp) Access: 2010-11-23 12:20:38.000000000 +0900 Modify: 2010-11-23 12:20:25.000000000 +0900 Change: 2010-11-23 12:20:25.000000000 +0900
指定ディレクトリ内の日付のディレクトリを圧縮したファイルを生成し、ディレクトリを削除(デフォルトは3日前)
#!/bin/bash DIR=/var/aplication/log FROM_DATE=`date --date '3 day ago' +%Y-%m-%d` TO_DATE=`date --date '3 day ago' +%Y-%m-%d` while getopts 'd:f:t:' OPTION do case $OPTION in d) DIR="$OPTARG" ;; f) FROM_DATE="$OPTARG" ;; t) TO_DATE="$OPTARG" ;; ?) printf "Usage: %s: -a aid [-d DIR] [-f FROM_DATE] [-t TO_DATE] args\n" $(basename $0) >&2 exit 2 ;; esac done target=$FROM_DATE target_s=`date --date "$target" '+%s'` to_s=`date --date "$TO_DATE" '+%s'` if [ ! -d $DIR ]; then echo "not found: $DIR" exit fi cd $DIR until [ $target_s -gt $to_s ]; do echo $target if [ -d $target ]; then tar cfz $target.tar.gz $target STATUS=$? if [ $STATUS = 0 ];then rm -rf $target fi fi target=`date --date "$target 1 day" +%Y-%m-%d` target_s=`date --date "$target" '+%s'` done