#!/bin/sh
if [ $# -ne 2 ] ;then
    echo "Usage : $0 [source dir] [dest dir]"
    exit 1
fi
if [ ! -d $1 ] ;then
    echo "\"$1\" must be a directory, please check."
    exit 1
fi
if [ ! -w $2 ] ;then
    if [ ! -a $2 ] ;then
        echo -n "\"$2\" does not exist, do you want to create it? [y/n] :"
	read ans
  	while [ true ] ;do
	    case "$ans" in
	    y|Y|yes|YES) 
	        mkdir $2
		if [ $? -ne 0 ] ;then
		    echo "Write \"$2\" error"
		    exit 1
		fi
		break ;;
	    n|N|no|NO)
		echo "Ok, don't creat directory, so this will done nothing."
		exit 0 ;;
	    *)
		echo -n "Expect \"yes\" or \"no\", please answer [y/n] :"
		read ans
	    esac
	done
    else
        echo "\"$2\" does not have write permission, please check."
        exit 1
    fi
else
    if [ ! -d $2 ] ;then
        echo "\"$2\" is not a directory, please check."
        exit 1
    fi
fi
LISTFILE=`ls $2`
if [ ! -z "$LISTFILE" ] ;then
    echo -n "There is some file in \"$2\", still process copy directory? [y/n] :"
    ans=""
    read ans
    while [ true ] ;do
        case "$ans" in
        y|Y|yes|YES) 
            break ;;
        n|N|no|NO)
	    echo "Ok, don't process, so this will done nothing."
	    exit 0 ;;
	*)
	    echo -n "Expect \"yes\" or \"no\", please answer [y/n] :"
	    read ans
	esac
    done
fi
SOURCEPARDIR=`dirname $1`
SOURCENAME=`basename $1`
DESTPARDIR=`dirname $2`
DESTNAME=`basename $2`
CURRDIR=`pwd`
echo "Copy in process..."
cd $1
if [ $DESTPARDIR = "." ] ;then
    # Destination is relative reference
    find -print | cpio -pd $CURRDIR/$DESTNAME
else
    # Destination is full reference
    find -print | cpio -pd $DESTPARDIR/$DESTNAME
fi
cd $CURRDIR
echo "Copy directory complete."
exit 0
อธิบายif [ $# -ne 2 ] ;then
if [ ! -d $1 ] ;then
if [ ! -w $2 ] ;then
if [ ! -a $2 ] ;thenส่วน
    $ copydir /home/user1 ./user2
จะ
    CURRDIR=`pwd`
    find -print | cpio -pd $CURRDIR/$DESTNAME
แต่
จะ
สำหรับ
ใน 
fyesno "\"$2\" does not exist, do you want to create it? [y/n] :"
และ
fyesno "There is some file in \"$2\", still process copy directory? [y/n] :"
สำหรับ
#!/bin/sh
#--------------------------------------------------------
fyesno () {
    echo -n $1
    read ans
    while [ true ] ;do
        case "$ans" in
        y|Y|yes|YES) 
	    # 0 - on success (true in shell)
            return 0 ;;
        n|N|no|NO)
	    # 1 - on fail (false in shell)
	    return 1 ;;
	*)
	    echo -n "Expect \"yes\" or \"no\", please answer [y/n] :"
	    read ans
	esac
    done
}
#-----------------------------------------------------------
if [ $# -ne 2 ] ;then
    echo "Usage : $0 [source dir] [dest dir]"
    exit 1
fi
if [ ! -d $1 ] ;then
    echo "\"$1\" must be a directory, please check."
    exit 1
fi
if [ ! -w $2 ] ;then
    if [ ! -a $2 ] ;then
        fyesno "\"$2\" does not exist, do you want to create it? [y/n] :"
	if [ $? -eq 0 ] ;then
	    mkdir $2
	    if [ $? -ne 0 ] ;then
	        echo "Write \"$2\" error"
		exit 1
	    fi
        else 
	    echo "Ok, don't creat directory, so this will done nothing."
	    exit 0 
	fi
    else
        echo "\"$2\" does not have write permission, please check."
        exit 1
    fi
else
    if [ ! -d $2 ] ;then
        echo "\"$2\" is not a directory, please check."
        exit 1
    fi
fi
LISTFILE=`ls $2`
if [ ! -z "$LISTFILE" ] ;then
    fyesno "There is some file in \"$2\", still process copy directory? [y/n] :"
    if [ $? -eq 1 ] ;then
        echo "Ok, don't process, so this will done nothing."
        exit 0 
    fi
fi
SOURCEPARDIR=`dirname $1`
SOURCENAME=`basename $1`
DESTPARDIR=`dirname $2`
DESTNAME=`basename $2`
CURRDIR=`pwd`
echo "Copy in process..."
cd $1
if [ $DESTPARDIR = "." ] ;then
    # Destination is relative reference
    find -print | cpio -pd $CURRDIR/$DESTNAME
else
    # Destination is full reference
    find -print | cpio -pd $DESTPARDIR/$DESTNAME
fi
cd $CURRDIR
echo "Copy directory complete."
exit 0
ใน
HTML developed by Kaiwal Development Team (kaiwal@geocities.com)