今矢@伊賀上野ともうします。
現在、afioや、tarを活用するためのshのシェルスクリプトを製作してい
ます。このスクリプトは、~/.logoutなどに記述しておき、毎回更新されたファ
イルをfindで検索し、tarや、afioのアーカイブに追加するという趣旨のもの
です。
しかしながら、原因不明のエラーがでて製作に詰まっています。エラーは以下
のようなものです。
cbtown _at_ dendrobum>./backuptool -a -t ./
./backuptool: line 40: unexpected EOF while looking for matching `"'
./backuptool: line 90: syntax error: unexpected end of file
40行目のエラーは、ダブルクオーテーションが対になっていないというエラー
だと解釈していますが、当該の部分では、きちんとついになっております。
if [ find_new_file == "" ] #original function
また、90行はファイルの終端を示す記号にたいするエラーだと解釈している
のですが、とくに妙なことをしているとも思えず、どういったトラブルなのか
わかりません。(きっと、エラーが出ているのだから、変なことになっているの
だろうけど)
どなたか、このトラブルの原因についてお分かりの方がいたら解決策を教えて
いただけないでしょうか?
#環境は、debianのpotetoをつかっていて、エディタはXEmacsを使っています。
cbtown _at_ ict.ne.jp
-------------------------------------------------------------------------
#!/bin/sh
#### 引数の処理 ####
#-t TGT_DIR バックアップされるディレクトリ
#-f ARV_FILE バックアップファイルの名称およびパス
#-a AFIO afioをtarの変わりに使う時
while [ "$1" != "" ]
do
case "$1" in
-h) echo "-t target dir"
echo "-f backupfile's name"
echo "-a afio"
exit 0 ;;
-t) TGT_DIR=$2; shift 2;;
-f) ARV_FILE=$2; shift 2;;
-a) AFIO=use; shift;;
-*) echo "get: Unkown argument $i" 1>&2; exit 1 ;;
esac
done
# default & error
if [ "$TGT_DIR" == "" ]
then
echo "ターゲットとするディレクトリを指定してください"
exit 1
fi
if [ "$ARV_FILE" == "" ]
then
# "$HOME/var/backup/披バックアップディレクトリ名" に保存する
ARV_FILE=$HOME/var/backup/`echo \
$TGT_DIR | awk -F / '{print $NF}'`
fi
#### back up 作業 ####
if [ -f "$ARV_FILE.tar.gz" ] || [ -f "$ARV_FILE.afz ]
then
if [ find_new_file == "" ] #original function
then
echo '新規ファイルは有りません。'
else
backup_add #original function
fi
else
new_backup #original function
fi
#### original function ####
function find_new_file(){
if [ $AFIO == use] && [ -x `which afio` ]
then #for afio
NEW_FILE=`find $TGT_DIR -newer $ARV_FILE.afz | \
grep -v $ARV_FILE.afz`
exit $NEW_FILE
else
NEW_FILE=`find $TGT_DIR -newer $ARV_FILE.tar.gz | \
grep -v $ARV_FILE.tar.gz`
exit $NEW_FILE
fi
}
function backup_add () {
if [ $AFIO == use] && [ -x `which afio` ]
then #for afio
echo $NEW_FILE | afio -ovZ $ARV_FILE
else #for tar
gzip -d $ARV_FILE.gz
tar uvf $ARV_FILE $NEW_FILE
gzip $ARV_FILE
fi
}
function new_backup(){
if [ $AFIO == use] && [ -x `which afio` ]
then #for afio
find $TGT_DIR | afio -ovZ $ARV_FILE
else #for tar
tar cvf $ARV_FILE $TGT_DIR
gzip $ARV_FILE
}
Follow-Ups:
- [linux-users:83033] Re: shのスクリプトのトラブルTakeshi Kusune / 楠根雄志
- [linux-users:83034] Re: shのスクリプトのトラブルISHIKAWA Mutsumi
- Prev by Subject: [linux-users:83031] Re: 2GB超えのファイルの作成
- Next by Subject: [linux-users:83033] Re: shのスクリプトのトラブル
- Previous by thread: [linux-users:83028] rpm4へのupgrade
- Next by thread: [linux-users:83033] Re: shのスクリプトのトラブル
- Indexes:[Main][Thread]