如何用Shell脚本编写递归程序

发表于:2007-07-04来源:作者:点击数: 标签:
UNIX Shell 脚本类似 DOS 的批处理命令,但比较起来 UNIX Shell 的功能更强大,在某些方面,Shell 甚至超过了一些高级语言。 下边的 Shell 脚本演示了如何用 Shell 脚本编写递归程序。 运行前先执行下述准备命令: ??ln tree.sh /usr/bin/tree ??ln tree.sh

  UNIX Shell 脚本类似 DOS 的批处理命令,但比较起来 UNIX Shell 的功能更强大,在某些方面,Shell 甚至超过了一些高级语言。
  
  下边的 Shell 脚本演示了如何用 Shell 脚本编写递归程序。
  
  运行前先执行下述准备命令:
  ??ln tree.sh /usr/bin/tree
  ??ln tree.sh /usr/bin/wtree
  ??ln tree.sh /usr/bin/dtree
  ??rm tree.sh
  
  # tree.sh
  
  # Depth first Directory list
  dtree() {
  PWD=`pwd|sed 's/\/\$//`
  for d in $*
  do
  echo "${PWD}/$d"
  [ -d "$d" -a -x "$d" ] && {
  cd "$d"
  dtree *
  cd ..
  PWD=`pwd|sed 's/\/\$//` # restore PWD
  }
  done
  }
  
  # Depth first Directory list
  wtree() {
  PWD=`pwd|sed 's/\/\$//`
  for d in $*
  do
  echo ${PWD}/$d
  done
  for d in $*
  do
  [ -d "$d" -a -x "$d" ] && {
  cd $d
  wtree *
  cd ..
  }
  done
  }
  
  # Directory list
  tree() {
  PWD=`pwd|sed 's/\/\$//`
  for d in $*
  do
  echo ${PWD}/$d
  done
  }
  
  # main
  TREE=`basename $0`
  if [ "$1" ]
  then DIR="$1"
  else DIR="."
  fi
  if cd $DIR
  then $TREE *
  else echo "$0: Directory $1 read fail."
  fi
  
  # (End)

原文转自:http://www.ltesting.net