Shell是Linux平台上的重要的一部分,它是提供给用户操作的接口,是连接用户与Linux内核的桥梁。通常说Shell是命令解释器,解释性编程语言的统称。

  Shell在接收到命令后,首先分析它是内部命令还是系统命令或者是应用程序,然后进行查找,进而将此命令转化成系统调用传给Linux内核。

  这里有一个小的题目:用Shell脚本实现查找当前目录下普通文件的个数。

  场景:假设当前目录下有五个文件一个目录,如下图所示:

代码文件:

count_files.sh

 1 #!/bin/bash
2
3 count=0
4 for f in *
5 do
6 if [ -f $f ]
7 then
8 echo 文件: $f
9 #count=$count+1 #错误
10 #count = `$count + 1` #错误
11 #count=$(($count+1)) #正确
12 #let count=count+1 #正确
13 #count=$[count+1] #正确
14 #`expr count = ${count} + 1` #错误
15 count=`expr $count + 1` #正确
16 else
17 echo 目录:$f
18 fi
19 done
20
21 echo 共有${count}个文件

注:
1)涉及知识点:

① :Shell脚本首行#!/bin/bash 用来指明此脚本用哪种Shell来解释执行,这里是用bash。

②:for循环结构:

for var in [list]

do

      #code block

done

③: if判断结构:

if [判断表达式]

then

  #code block

else

  #code block

fi

④:Shell中进行算术运算的四种方式:

◆  expr 算术式   

  例如:r=`expr 4+2`

◆ $((算术式))

  例如:r=$((4+2))

◆ $[算术式]

  例如:r=$[4+2]

◆ let 算术式

  例如:let r=4+2

⑤: 判断比较表达式

◆与文件相关的判断符

-e :文件存在

-s : 文件大小不为0

-f:文件是普通文件

-d:是目录

-r:可读

-w:可写

-x:可执行

◆字符串比较符:

< : 小于

> : 大于

= :等于

!= : 不等于

◆整数之间比较符:

-eq : 相等

-ne : 不相等

-gt : 大于

-lt :小于

-ge:大于等于

-le:小于等于

-z :为空

-n:不为空

运行结果如下: