学习目标:
- 了解什么是shell,shell有哪些类型及如何调用
- 掌握shell变量与数组的定义及赋值方法
- 掌握shell变量的类型及作用域
- 掌握shell脚本的执行方式
shell概述
一、shell功能
一个类用c语言编写的命令解释器程序的统称,也是以恶搞脚本编程语言,用户与内核交互的桥梁
shell的功能
- 接收用户命令
- 调用相应的应用程序
- 解释并交给内核处理
- 返还内核处理结果
二、shell的种类
(1)MS-DOS(本身就是一个Shell)
(2)Windows的Shell:windows Explorer(图形化)、cmd(命令行)
(3)UNIX的Shell:sh、bash、csh、ksh等(平时的Shell,指UNIX的Shell)
sh(bourne Shell)
sh是一个遵循Unix POSIX标准的Shell程序
sh是所有其他UNIX Shell的基础
sh的可移植性最高
bash(Bourme Again Sell)
bash是sh的增强版,代替sh,兼容sh,有ksh和csh的有用功能,bash是大多数linux系统默认的shell
shell的种类
/bin/sh bash shell的一个快捷方式
/bin/bash 大多Linux默认的shell,几乎涵盖shell所有功能
/sbin/nologin 表示非交互式,不能登录操作系统
/bin/dash 小巧,高效,功能相比少一些
/bin/tcsh 是csh的增强版,完全兼容csh
/bin/csh 有c语言风格的一种shell,有许多特特性
三、了解Shell调用
1.查看系统可用的Shell
chsh -l
2.查看:用户当前使用的shell
3.永久更改:用户的登录shell
4.shell脚本声明,shell命令行解释器
#!/bin/bash:声明shell脚本的解释器
5.调用shell来实行命令
四、脚本的基本写法
vi xx.sh(后缀为sh)用vi编辑器打开文件
#!/bin/bash 脚本申明,告诉系统这个脚本需要什么解释器来执行,使用哪一种shell
脚本基本信息的描述
#Name:名字
#Desc:描述describe
#Path:存放路径
#Usage:用法
#Update:更新时间
后面是脚本具体内容
本章小结
1.学习shell的概念和作用
2.shell的种类
shell变量
Shell变量的概念
1.变量的定义与赋值
2.shell变量的删除
3.数组变量
shell变量
变量,进程中用于存储数据的内存实体,分为本地变量和环境变量,
一、变量的概念
1.变量的定义与赋值
命名规则:字母,数字,下划线,不能以数字开头,不能是关键字
定义方式:变量名="变量值"
提取变量:$变量名或${变量名}
2.shell变量的删除
通常在shell脚本定义使用shell变量,shell脚本执行结束之后,变量随着进程的消亡而消亡
set 查看当前bash进程的所有Shell变量
unset:删除当前bash进程和shell本地变量
3.数组变量:
多个元素按一定顺序排列结合,把有限个元素用一个名字命名。数组可以保存一组值的变量
数组定义:array_name=(value1 value2...)
1) 数组定义 #name={tom mary natasha}
2) 查看数组中某个元素值#echo ${name[0]}
3) 查看数组的下标#echo$(!name[@])在[]中加@或*,数组前面加!
4) 数组的遍历
5)显示数组中元素的个数echo ${#nam[@]}}或echo ${#name[*]}
6) 取消数组
利用下标删除数组中的元素
直接删除整个数组
本章小结
shell变量的定义、赋值、查看、删除
shell变量类型
一、变量的类型
变量有本地变量、环境变量、内置变量
本地变量:当前用户自定义的变量。当前进程中有效,其他进程及当前进程的子进程无效
环境变量:当前进程有效,能够被子进程调用
内置变量:系统变量,shell本身已经固定好了它的名字和作用
二、环境变量
查看当前用户的环境变量:evn
查看当前用户的所有变量(临时变量与环境变量):set
将当前变量变成环境变量:export
永久生效
三、内置变量
$!:上一条命令执行后返回的状态,但会状态值为0时表示执行正常,非0表示异常
$$:当前所在进程的进程号
杀死当前进程,退出当前终端
!$ :调用最后一条命令历史中的参数
!!:调用最后一条命令历史
$#
$*
$@
编写脚本
当前执行的进程/程序名
四、脚本运行方式
fork()函数
vfork()函数
exec 函数族
sourc test.sh 或 .test.sh
bash test.sh 或 sh test.sh
./test.sh (需要x权限) /root/test.sh(需要x权限)
exec ./test.sh(需要x权限) exec /root/test.sh(需要x权限)
五、用户环境变量配置文件
$HOME/.bashrc 用户的bash 信息(aliase 、umask等)(用户级)
$HOME/.bash_profile 当前用户的环境变量(用户级)
$HOME/.bash_logout
/etc/bashrc
/etc/profile
用户登录系统读取相关文件顺序:
/etc/profile——》$HOME/.bash_profile——》$HOME/.bashrc——》/etc/bashrc——》$HOME/.bash_logout
六、shell脚本中的引号
单引号和双引号
定义一个变量:var01="abc"
单引号不能识别变量引用符号$
双引号可以
本章小结
本地变量与环境变量的定义与使用以及作用域
脚本的多种指定方式及区别