シェル - シェルスクリプト - ディレクトリ一覧

 クラウディア
1. 概要
2. やりたいこと
3. ディレクトリ一覧
4. 最終形

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
 とプリフィックスのように「+」がつくのと、リダイレクト以降が表示されないのが「なんとも・・・」ですが、表示されないよりはまし。
ハイスピードプラン