シェル - シェルスクリプト - ディレクトリ一覧
1. 概要 これは、やりたいことを説明するところからはじめないと、むつかしい。 本ページは、下記のサイトを参考にさせていただきました。 「bashのfor文を使ってディレクトリ内のファイル一覧とディレクトリ一覧を出力」 「bash 変数に日付を入れる方法」 「【 basename 】コマンド――パス名からファイル名を取得する:Linux基本コマンドTips」 「command line - equivalent "echo on" for linux?」 2. やりたいこと 「Subversion」のリポジトリが、あるディレクトリに。 /パス/hogehoge /パス/fugafuga /パス/piyopiyo てな具合にあります。 これを。 svnadmin --quiet dump hogehoge > YYYYMMDD-hogehoge.dump てな感じで、ダンプするのですが、実際のリポジトリは、もう少し数が多くて、いちいち、手打ちするのは、面倒くさい。 シェルスクリプトで、できないかなぁ、と思った次第です。 3. ディレクトリ一覧 ディレクトリ一覧は、参考サイトのとおり。 #!/bin/sh # files="/パス/*" for filepath in $files do if [ -d $filepath ]; then echo $filepath fi done てなことをすれば、うまいこととれました。 本日の日付を変数化する方法は、なんだ、本章の他のページに自分で書いていました。 すぐ忘れちゃうのね。バカだなぁ。 4. 最終形 最終形は、下記のようになりました。 #!/bin/sh dir="/パス/" today=`date "+%Y%m%d"` cd $dir files=$dir"*" for filepath in $files do if [ -d $filepath ]; then file=`basename $filepath` set -x svnadmin --quiet dump $file > $today-$file.dump set +x fi done 14行目の実行中のコマンドを表示したくて。 14行目の前後に、「set -x」「set +x」をつけています。 なんか、「±」の意味を取り違えちゃいそうですが、「-x」で「echo on」、「+x」で「echo off」になるようです。 表示が。 + svnadmin --quiet dump hogehoge とプリフィックスのように「+」がつくのと、リダイレクト以降が表示されないのが「なんとも・・・」ですが、表示されないよりはまし。
「bashのfor文を使ってディレクトリ内のファイル一覧とディレクトリ一覧を出力」 「bash 変数に日付を入れる方法」 「【 basename 】コマンド――パス名からファイル名を取得する:Linux基本コマンドTips」 「command line - equivalent "echo on" for linux?」
/パス/hogehoge /パス/fugafuga /パス/piyopiyo
svnadmin --quiet dump hogehoge > YYYYMMDD-hogehoge.dump
#!/bin/sh # files="/パス/*" for filepath in $files do if [ -d $filepath ]; then echo $filepath fi done
#!/bin/sh dir="/パス/" today=`date "+%Y%m%d"` cd $dir files=$dir"*" for filepath in $files do if [ -d $filepath ]; then file=`basename $filepath` set -x svnadmin --quiet dump $file > $today-$file.dump set +x fi done
+ svnadmin --quiet dump hogehoge