Kali-LinuxShell编程
【课程目的】
1.掌握shell的基本命令
2.掌握shell的基本概念和作用
3.掌握shell环境变量概念和使用方法
4.掌握shell程序的结构和设计方法
【实现场景】
1. VMware Workstation虚拟机
2. Kali Linux操作系统
【课程原理】
1. shell的基本概念:
shell就是用户与操作系统内核之间的接口,起着协调用户与系统的一致性和在用户与系统之间进行交互的作用。
shell在linux系统中具有极其重要的低位。
2. Shell脚本
Shell最强大的功能在于它是一个功能强大的编程语言。用户可以在文件中存放一
系列的命令,这被称为Shell脚本或Shell程序,将命令、变量和流程控制有机地
结合起来将会得到一个功能强大的编程工具。
3. Shell脚本结构
Shell结构中主要包括三部分:
#!指定执行脚本的shell类型
#代码注释行
命令可控制结构
#!/bin/bash
#Thisis my first shell script.
cd/root
ls-l
mkdirf1
cdf1
vif1
chmod+x f1
cd
/root
注:编写的shell脚本默认是不可执行的,需要用chmod命令更改文件权限
4.执行shell脚本的方法
a)输入定向到shell脚本。脚本后不用带参数
例如:root@kali:~# bash
b)以脚本名作为shell命令的参数,一般形式:shell名脚本名[参数]
例如:root@kali:~# bashf1
c)使用‘.’命令。一般形式:. /脚本名
例如:root@kali:~# . /f1
5. Shell语法
a) Shell变量
变量用来存储数据,与其他编程语言相比,shell的变量要简单的多,不需要
指定类型。格式:
变量名=变量值
注:等号两侧不能有空格,变量名是以字母、下划线开头的字母、下划线和数
字的组合,区分大小写。
引用变量值时在变量前加‘$’符号,如:echo $ name
b)位置变量
shell解释执行用户命令时,将命令的第一部分作为命令名,其它部分作为参数,由出现在命令行上的位置确定的参数称为位置参数。
例如:ls–l file1 file2 file3
file4
$0代表此程序的文件名ls–l
$n代表此程序的第n个参数值,n=1-9,$1=file1
c) read命令
从键盘读取数据赋值给变量
例如:#!/bin/bash
read one two three
echo“This is $one.”
echo“This is $two.”
echo“This is $three.”
d) expr命令
对整数型变量进行算数运算
例如:expr 3 + 5
expr $nu - 5
expr $nu1 / $nu2
e)变量测试语句
用于测试变量是否相等、是否为空和文件类型等
格式:test测试条件或[测试条件]
例如:test n1–eq n2或[ n1–eq n2 ]
字符串测试
测试条件含义
st1 = st2 st1与st2相等为真
st1!= st2 st1与st2不相等为真
s s不为空时为真
-n s s的长度大于0为真
-z s s的长度为0时为真
数值测试
n1–eqn2 n1是否等于n2 n1–gen2 n1是否不小于n2
n1–nen2 n1是否不等于n2 n1–ltn2 n1是否小于n2
n1–gtn2
n1是否大于n2 n1–len2 n1是否不大于n2
文件测试
-r file文件是否可读
-w file文件是否可写
-x file文件是否可执行
-f file文件是否为普通文件
-d file文件是否为目录
-s file文件的内容是否大于0
f)分支结构if
if分支结构的语法形式
if [条件测试1]
then
执行命令1
Elif[条件测试2]
then
执行命令2
„„
else
执行命令n
fi
多个条件时可以用逻辑运算符组成测试表达式
-a逻辑与
-o逻辑或
!逻辑非
g)分支结构case
case经常用于多重分支结构,其语法形式为;
case字符串in
匹配字符串1)
执行命令1;;
匹配字符串2)
执行命令2;;
„„
匹配字符串n)
执行命令n;;
esca
h)循环结构while
while结构语法形式
while条件测试
do
执行命令
done
执行流程为:只要条件测试的结果为真,就执行do和done之间的循环体,
再进行条件测试,然后执行循环体,直到条件测试的结果为假为止。
i)循环结构until
until结构的语法形式
until条件测试
do
执行命令
done
其执行流程为:只要条件测试的结果为假,就执行do和done之间的循环
体,直到条件测试的结果为真为止。
j)循环结构for
for循环结构的语法形式为
for变量in值表
do
执行命令
done
其执行流程为:第一次循环时将值表中的第一个值赋给变量,执行循环体,
第二次循环时将值表中的第二个值赋给变量,执行循环体,以此类推直到值表
值全赋值给变量循环结束。
在执行循环时命令break和continue可以跳出循环
break跳出整个循环
continue跳出本次循环,继续下次循环
k)函数应用
在shell脚本中可以定义并使用函数,函数要先定义后使用,定义函数的
语法形式为:
函数名()
{
执行命令序列
}
注:函数中变量均为全局变量无局部变量