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:不为空
运行结果如下: