您的位置:首页 > 运维架构 > Shell

Shell脚本遍历目录

2016-06-21 00:13 316 查看
这里,主要通过该脚本来练习Shell函数的写法,其功能主要是用来递归地遍历Unix目录,列出其中的文件和目录,并且能够通过缩进来展示文件的目录层级关系。

tree.sh:

function listFiles()
{
#1st param, the dir name
#2nd param, the aligning space
for file in `ls $1`;
do
if [ -d "$1/$file" ]; then
echo "$2$file"
listFiles "$1/$file" "   $2"
else
echo "$2$file"
fi
done
}
listFiles $1 ""


通过该脚本主要掌握下面几点:

Shell脚本中定义函数的方法。

注意,在访问函数参数时的方法。
$n
的含义是取第n个参数。

Shell脚本中双引号的作用。

命令行中的字符可以分为两类:文本字符(literal)和元字符(meta)。 literal也就是普通纯文字,对 shell 来说没特殊功能;meta对shell来说,具有特定功能的特殊保留字符。

最常见的保留字符有两个:
IFS
<space>
<tab>
<enter>
三者之一组成(我们常用
space
),
IFS
是用来拆解 command line的每一个词(word)用的,因为shell command line是 按词来处理的;
CR
则是用来结束command line用的,这也是为何我们敲
<enter>
命令就会跑的原因。

有时候,我们希望shell将meta字符作为普通的literal字符处理,也求是去掉原有的shell保留字符的语义,仅仅作为一个文本字符处理。这时候就需要对这些字符进行
quoting
处理。

常用的 quoting 有如下三种方法:hard quote,’ ’ (单引号),凡在hard quote中的所有meta均被关闭;soft quote,” ” (双引号),在 soft quoe 中大部份meta都会被关闭,但某

些则保留(如$);escape,\ (反斜线),只有紧接在escape(跳脱字符)之后的单一meta才被关闭。

运行效果:

$ sh tree.sh .
test
a.txt
b.txt
good
game
of
thrones
hah.txt
tree.sh
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  unix shell 函数