mkdirhier
上传用户:zibowangxu
上传日期:2007-01-04
资源大小:331k
文件大小:2k
- #!/bin/sh
- #
- # Copyright (c) 1999 WU-FTPD Development Group.
- # All rights reserved.
- #
- # Portions Copyright (c) 1980, 1985, 1988, 1989, 1990, 1991, 1993, 1994
- # The Regents of the University of California.
- # Portions Copyright (c) 1993, 1994 Washington University in Saint Louis.
- # Portions Copyright (c) 1989 Massachusetts Institute of Technology.
- # Portions Copyright (c) 1998 Sendmail, Inc.
- # Portions Copyright (c) 1983, 1995, 1996, 1997 Eric P. Allman.
- # Portions Copyright (c) 1996, 1998 Berkeley Software Design, Inc.
- # Portions Copyright (C) 1991, 1992, 1993, 1994, 1995 1996, 1997
- # Free Software Foundation, Inc.
- # Portions Copyright (c) 1997 Stan Barber.
- # Portions Copyright (c) 1997 Kent Landfield.
- #
- # Use and distribution of this software and its source code are governed by
- # the terms and conditions of the WU-FTPD Software License ("LICENSE").
- #
- # If you did not receive a copy of the license, it may be obtained online at
- # http://www.wu-ftpd.org/license.html.
- #
- # $Id: mkdirhier,v 1.4 1999/08/27 14:05:29 wuftpd Exp $
- #
- newline='
- '
- IFS=$newline
- case ${1--} in
- -*) echo >&2 "mkdirhier: usage: mkdirhier directory ..."; exit 1
- esac
- status=
- for directory
- do
- case $directory in
- '')
- echo >&2 "mkdirhier: empty directory name"
- status=1
- continue;;
- *"$newline"*)
- echo >&2 "mkdirhier: directory name contains a newline: ``$directory''"
- status=1
- continue;;
- ///*) prefix=/;; # See Posix 2.3 "path".
- //*) prefix=//;;
- /*) prefix=/;;
- -*) prefix=./;;
- *) prefix=
- esac
- IFS=/
- set x $directory
- case $2 in
- */*) # IFS parsing is broken
- IFS=' '
- set x `echo $directory | tr / ' '`
- ;;
- esac
- IFS=$newline
- shift
- for filename
- do
- path=$prefix$filename
- prefix=$path/
- shift
- test -d "$path" || {
- paths=$path
- for filename
- do
- if [ "$filename" != "." ]; then
- path=$path/$filename
- paths=$paths$newline$path
- fi
- done
- mkdir $paths || status=$?
- break
- }
- done
- done
- exit $status