日期:2014-05-16  浏览次数:20573 次

如何实现递归
[ $# -eq 0 ] && directorys=`pwd`||directorys=$@
linkchk(){
  for element in $1/*;do
  [ -h "$element" -a ! -e "$element" ] && echo \"$element\"
  [ -d "$element" ] && linkchk $element
  done
}
for directory in $directorys;do
  if [ -d directory ]
  then linkchk $directory
  else
  echo "$directory is not a directory"
  echo "Usage:$0 dir1 dir2 ..."
  fi
done
exit 0

我不明白的是linkchk()函数中,对有子目录的目录他是如何实现递归,高手们能否举例详细说明下,例如/bin/ss
还有第三行的in $1/*;又是什么意识?

------解决方案--------------------
for element in $1/*
其中$1就是函数的第一个参数,也就是一个目录的名称
整句话的意思就是把目录下面的项目逐一赋值给element变量,循环处理