[Subject Prev][Subject Next][Thread Prev][Thread Next][Subject Index][Thread Index]

[linux-users:83032] shのスクリプトのトラブル


  今矢@伊賀上野ともうします。
  現在、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
}

この情報があなたの探していたものかどうか選択してください。
yes/まさにこれだ!   no/違うなぁ   part/一部見つかった   try/これで試してみる

あなたが探していた情報はどのようなことか、ご自由に記入下さい。特に「まさにこれだ!」と言う場合は記入をお願いします。
例:「複数のマシンからCATV経由でipmasqueradeを利用してWebを参照したい場合の設定について」
Follow-Ups: