zhk2369 发表于 2018-8-24 10:34:16

shell循环和分支

  1 #!/bin/bash
  2 #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]
查看完整版本: shell循环和分支