Linux Shell编程基础
Linux Shell编程基础
1. Shell 简介
1.1 Shell概述
Shell 本身是一个用 C 语言编写的程序,它是用户使用 Unix/Linux 的桥梁,用户的大部分工 作都是通过 Shell 完成的。Shell 既是一种命令语言,又是一种程序设计语言: 作为命令语言,它交互式地解释和执行用户输入的命令; 作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结 构,包括循环和分支。
Shell 它虽然不是 Unix/Linux 系统内核的一部分,但它调用了系统核心的大部分功能来执行程 序、建立文件并以并行的方式协调各个程序的运行。Shell 是用户与内核进行交互操作的一 种接口,目前最流行的 Shell 称为 bash Shell(Bourne Again Shell)
Shell 是一门编程语言(解释型的编程语言),即 shell 脚本(就是在用 linux 的 shell 命令编程), Shell 脚本程序从脚本中一行一行读取并执行这些命令,相当于一个用户把脚本中的命令一 行一行敲到 Shell 提示符下执行
Shell 是一种脚本语言,那么,就必须有解释器来执行这些脚本 Unix/Linux上常见的 Shell 脚本解释器有bash、sh、csh、ksh等,习惯上把它们称作一种 Shell。 我们常说有多少种 Shell,其实说的是 Shell 脚本解释器,可以通过 cat /etc/shells 命令查看系 统中安装的 shell,不同的 shell 可能支持的命令语法是不相同的
sh 是 Unix 标准默认的 shell,由 Steve Bourne 开发,是 Bourne Shell 的缩写。 bash 是 Linux 标准默认的 shell,本教程也基于 bash 讲解。bash 由 Brian Fox 和 Chet Ramey 共同完成,是 Bourne Again Shell 的缩写。
vShell 本身支持的命令并不多,内部命令一共有 40 个,但是它可以调用其他的程序,每个程 序就是一个命令,这使得Shell命令的数量可以无限扩展,其结果就是Shell的功能非常强大, 完全能够胜任 Linux 的日常管理工作,如文本或字符串检索、文件的查找或创建、大规模软 件的自动部署、更改系统设置、监控服务器性能、发送报警邮件、抓取网页内容、压缩文件 等。
1.2 Shell基本格式
代码写在普通文本文件中,通常以.sh 结尾,虽然不是强制要求,但希望大家最好这么做
例子:
[[email protected] bin]# vi helloworld.sh
保存退出即可.
在这里,我们就写好了一个 shell 脚本,第一行是固定需要的,表明用哪一种 shell 解析器来 执行我们的这个脚本程序。本质上,shell 脚本里面的代码都是就是一些流程控制语句加一 些特殊语法再加 shell 命令组成。其中,我们可以当做每一个命令就是 shell 编程当中的关键字
1.3 Shell 执行方式
- sh 方式或者 bash 方式
sh helloworld.sh
bash helloworld.sh ## 直接指定用系统默认的 bash shell 解释执行 - source 方式或者.方式 source 命令也称为“点命令”,也就是一个点符号(.),是 bash 的内部命令。 功能:使 Shell 读入指定的 Shell 程序文件并依次执行文件中的所有语句 source 命令通常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录。 用法:
source filename
或
.(空格)filename
- 直接执行该脚本文件
可以有两种方式,不过这两种方式的执行,都需要该文件有执行权限 所以在执行之前,我们要更改他的执行权限
1.4 Shell 注释
单行注释:Shell 脚本中以#开头的代码就是注释
多行注释:Shell 脚本中也可以使用多行注释:
:<<!
echo “dd” ## 这句话是注释,也就是说在 :<<! 注释语句 ! 中间的都是注释
!
Shell 基本语法
2.1、变量
2.1.1 系统变量
Linux Shell 中的变量分为“系统变量”和“用户自定义变量” 系统变量可以通过 set 命令查看,用户环境变量可以通过 env 查看
2.1.2 自定义变量
单引号和双引号总结:
3. 变量高级用法 撤销变量:unset ABC 声明静态变量:readonly ABC= ‘abc’ 特点是这种变量是只读的,不能 unset
请先看一个例子,我现在写两个脚本,在 a.sh 中调用 b.sh 执行,那我们想知道 a 脚本能 不能获取到 b 脚本的变量,b 脚本能不能获取到 a 脚本的变量?
【注】:反引号位 (`) 位于键盘的Tab键的上方