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

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

??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) 

[b:cd3719f054][/b:cd3719f054] :em11:  :em11:  :em11:  :em11:  :em11:  :em11:

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