Shell概述
1,shell概述
是一个c语言编写的脚本语言,是linux和用户的桥梁,用户输入命令交给shell处理。shell,将相应的操作传递给内核(kernel),内核把处理的结果输出给用户
1.1Shell解释器有哪些?
(1)sh:全称是Bourne shell,由AT&T公司的Steve Bourne开发,为了纪念 他,就用他的名字命名了。 sh是UNIX上的标准shell,很多 UNIX版本都配有sh。sh是第一个流行的Shell。
(2)csh: 全称是C shell,它是sh之后另一个广为流传的shell是由柏克莱大学的 Bill Joy设计的。 这个shell的语法有点类似C语言,所以才得名为C shell ,简称为csh。
(3)Bash:全称是bash shell,它是Linux的默认shell。由GNU组织开发,是各种 Linux发行版默认配置的shell。 bash兼容了sh,针对sh编写的Shell代码可以不加修改地在bash中运行。
注意:目前,在Linux系统中,默认的shell程序是bash shell。
2.Shell开发
Shell程序文件通常以.sh结尾。类似于Kettle的Mac OS启动执行的文件
语法:sh ./spoon.sh
2.1开发步骤
(1)新建一个.sh文件
(2)在.sh文件中编写程序代码
(3)给.sh文件添加可执行权限x
(4)执行程序
例如:
①touch a.sh
②vim ./a.sh
③chmod u+x a.sh
④sh .ash或者./a.sh或者绝对路径下输出a.sh
3.变量
shell变量是一种很"弱"的变量,默认情况下,一个变量保存一个字符串。
虽然变量可以直接存储一个字符串,但仍然建议把值使用双引号表示,即"内容值"。
3.1定义变量
①定义变量名语法:变量名=变量值
(变量名一定要记得全大写)
注意规则:
1)变量名可以由字母、数字和下划线组成,但是不能以数字开头, 不能使用关键字;
2)在bash中,变量的默认类型都是字符串型,如果要进行数值运算,则必须使用特殊 命令;
3)变量用等号"=“连接值,”=“左右两侧不能有空格; 4)变量值中如果有空格,则需要使用单引号或双引号包含,如test=“hello world!”;
5)在变量值中,可以使用”"转义符。
②访问变量的语法:
变量名或
变量名 或
变量名或{变量名}
建议提取变量时,推荐使用{ }标识变量的边界范围。
③删除变量
删除变量的语法:unset 变量名
只读变量无法通过这个删除,需要下载专门的删除工具
④定义只读变量
readonly 变量名
readonly 变量名=变量值
Shell程序
#!/bin/bash
# 定义变量
name="Jerry"
# 访问变量
echo $name
gender=male
echo ${gender}
4,环境变量(environment variable)
环境变量是操作系统(Windows、Linux、Mac)在运行时,记录的一些关键信息,
用以辅助系统运行。
当shell程序启动时,都自动设置了一组变量,这组变量就是环境变量。在Linux中查
看环境变量命令:env
4.1环境变量设置的两种方式
1,临时设置
语法:
export 变量名=变量值
2,永久生效设置
①仅针对当前用户生效,配置在当前用户的:
~/.bashrc文件中
②针对所有用户生效,配置在系统的:
/etc/profile文件中
若要让环境变量立刻生效,可以进行重新登录账号。也可以通过语法:
source 配置文件
过程例如:
步骤①使用vim /etc/profile进入到配置文件中
②将要配置的变量放入文件中
③source /etc/profile刷新配置文件
设置环境变量的作用,为了能够在任何目录下执行
特殊变量
特殊变量,指的是:在执行Shell脚本时,向脚本传递参数,这时可以使用特殊变量来获取参数值。
在执行Shell程序脚本时,可以向shell脚本动态传递参数。
这样做的好处是某些配置属性不用写死在脚本中。动态传递参数的语法:
sh shell脚本文件 参数1 参数2…………
解释:Shell常用的特殊变量有:
$0:当前程序的名称(shell文件名称)
$n:$1表示第一个参数,$2表示第二个参数,依次类推
$#:命令行参数的个数
$*:以参数1,参数2……形式保存所有参数
定义Shell文件:
#!/bin/bash
echo "程序脚本文件名:"$0
echo "参数1:"$1
echo "参数2:"$2
echo "个数:"$#
echo "参数列表:"$*
执行的shell脚本文件为sh ./04_special_value.sh 100 22 308 4090
可以根据脚本文件的内容输出内容
Shell脚本执行方式
(1)shell命令倾向于在Linux命令行中使用,适合简单逻辑场景;
(2)shell脚本倾向于在文件中编写,适合复杂的逻辑处理场景。[if、while等]
(1)sh执行 ,sh 脚本程序名
(2)相对路径执行,./脚本程序名
(3)绝对路径执行,/绝对路径/脚本程序名