shell循环和分支
1 #!/bin/bash2 #symlinks.sh: 列出目录中所有的符号连接文件.
3
4
5 directory=${1-`pwd`}
6 #如果没有其他的特殊指定,
7 #+ 默认为当前工作目录.
8 #下边的代码块,和上边这句等价.
9 #----------------------------------------------------------
10 #ARGS=1 # 需要一个命令行参数.
11 #
12 # if [$# -ne "$ARGS" ]# 如果不是一个参数的话...
13 # then
14 # directory=`pwd` # 当前工作目录
15 # else
16 # directory=$1
17 # fi
18 #----------------------------------------------------------
19
20 echo"symbolic links in directory \"$directory\""
21
22 forfile in "$( find $directory -type l )" # -type l 就是符号连接文件
23 do
24 echo "$file"
25 done |sort # 否则列出的文件将是未排序的
26 #严格上说,此处并不一定非要一个循环不可,
27 #+ 因为"find"命令的结果将被扩展成一个单词.
28 #然而,这种方式很容易理解和说明.
29
30 #Dominik 'Aeneas' Schnitzer 指出,
31 #+ 如果没将 $( find $directory -type l )用""引用起来的话
32 #+ 那么将会把一个带有空白部分的文件名拆成以空白分隔的两部分(文件名中允许有空白).
33 #即使这只将取出每个参数的第一个域.
34
35 exit 0
36
37
38 # JeanHelou 建议使用下边的方法:
39
40 echo"symbolic links in directory \"$directory\""
41 # 当前IFS的备份.要小心使用这个值.
42 OLDIFS=$IFS
43 IFS=:
44
45 forfile in $(find $directory -type l -printf "%p$IFS")
46 do # ^^^^^^^^^^^^^^^^
47 echo "$file"
48 done|sort
页:
[1]