2012-12-12 :-(
_ [シェルスクリプト]ディレクトリをインクリメントする
3ケタ以上はどうするんだ とか言わない。
#!/bin/sh
set -x
setup()
{
basedir=${1}
subdir=${2}
}
# 既存ディレクトリの数値をインクリメントしてその名前のディレクトリを作ってく
#
# ./foo/bar/01
# ./foo/bar/02
# ./foo/bar/03
#
increment()
{
n=$(/bin/ls -1 ${basedir}/${subdir} | tail -1)
n2=$(printf "%02d" $(expr ${n} + 1))
mkdir -p ${basedir}/${subdir}/${n2}
}
# 数値ディレクトリがあれば数値をインクリメントしたディレクトリを作る
# なければ 01 ディレクトリを作る
main()
{
if [ -d ${basedir}/${subdir}/01 ]; then
increment $@
else
mkdir -p ${basedir}/${subdir}/01
fi
}
setup $@
main $@
/cygdrive/c/home/miwa/work/lang/shell/increment% ./inc0.sh foo bar + setup foo bar + basedir=foo + subdir=bar + main foo bar + mkdir -p foo/bar + '[' -d foo/bar/01 ']' + mkdir -p foo/bar/01 /cygdrive/c/home/miwa/work/lang/shell/increment% ./inc0.sh foo bar + setup foo bar + basedir=foo + subdir=bar + main foo bar + mkdir -p foo/bar + '[' -d foo/bar/01 ']' + increment foo bar ++ /bin/ls -1 foo/bar ++ tail -1 + n=01 +++ expr 01 + 1 ++ printf %02d 2 + n2=02 + mkdir -p foo/bar/02 /cygdrive/c/home/miwa/work/lang/shell/increment% ./inc0.sh foo bar + setup foo bar + basedir=foo + subdir=bar + main foo bar + mkdir -p foo/bar + '[' -d foo/bar/01 ']' + increment foo bar ++ /bin/ls -1 foo/bar ++ tail -1 + n=02 +++ expr 02 + 1 ++ printf %02d 3 + n2=03 + mkdir -p foo/bar/03
[ツッコミを入れる]



