场景
光速入门shell与编写软件自动化部署脚本
分析
一、什么是Shell 编程与为什么要学习shell编程
- 什么是shell编程
利用shell为我们提供的功能,编写应用程序,这个程序里面可能包含shell的内置命令与外部命令。辣么问题来了:什么是 shell 呢?有哪些shell呢?为什么要学习bash shell ? bash Shell为我们提供哪些功能呢?
- 好,先来聊聊什么是shell。
shell 直接翻译成中文就是‘外壳’,由‘外壳’大家直接联想到什么呢?对,鸡蛋壳!鸡蛋壳里面有什么?蛋白。那蛋白里面是什么呢?蛋黄。从用户使用的角度来说,计算机也有类似的组成结构-“蛋黄”:硬件设备,eg:CPU,内存,网卡,声卡等。“蛋白”:操作系统,eg、windows、linux、Machtosh等,“外壳”:shell- 广义的shell就是能够接受来自用户的指令,能够操作应用程序的接口,都能称作shell。 咱们通常所指的狭义的shell是指命令行方面的软件,像bash shell、csh shell、zsh shell等等。Shell在计算机中的位置如下图所示:
Shell在计算机中所处在的位置
- 为什么要学习bash shell呢
不同的shell功能差不多,但是语法细节有点差异,而各种linux发行版本默认的shell是 bash sh ell,所以我们接下来的shell 编程是基于 bash shell这样一个大环境来进行的。好,最后一个问题:Bash 这个应用程序为我们提供了哪些功能呢?大致分为五大类:命令行操作界面、变量功能(环境变量、本地变量、变量参数)、命令别名与历史命令、数据流从定向、管道命令。详见下图示:
bash功能图解
命令行界面:就是在控制台输入用户名与密码登录后所出现的界面辣。
变量功能:语法 varName=value [中间不能有空格,有空格的话,bash会把它当做名利来执行]举例:#name=snail #echo $name
命令别名与历史命令:#alias
数据流从定向:把命令的执行结果(正常结果,异常结果)重新导入到其他的(非默认)文件中去。
管道命令:个人认为叫做过滤命令更好,eg、 grep 、cut、less、more.
以上命令大家先了解一下就行,有个印象,至于具体怎么 用,会在接下的具体的实际案例与linux系统源代码分析中加以详细说明。
待更新。
二、 Shell编程初体验之第一个script的编写: HelloWorld.sh
待更新。
三、shell编程入门之条件控制、循环结构与脚本的调试
这里先交代一下相关语法,然后以实际应用案例与linux系统源代码分析中加以详细说明。
3.1 条件表达式之test命令与判断符号“[ ]”(注:就是中括号辣)
语法:test [option]... Filename
功能:检查文件类型、权限、文件新旧的比较;两个整数之间的比较;字符串内容判断;多重条件判断。
应用举例:
test -f filename :该文件名是否存在且为文件(file)。
test -d filename :该文件名是否存在且为目录(directory)。
test -r filename :该文件名是否存在且具有可读权限。(同理:-w、-x)
test “1” -ne “2” :1是否比2大,大则返回真,否则返回假。(同理:-eq、-gt、-ge 等)
Test -z string : 判断字符是否为空(“”),空则返回 true
Test str1 = str1 ; Test str1!= str2
注:[ ] 功能同 test 命令,test命令有的功能 [ ] 都有,使用方法也完全一致(特别注意: [ ] 中的所有元组都得有空格,这是语法规定辣)。应用举例:[ -f filename ] - 该文件名是否存在且为文件(file)。
3.2 逻辑控制结构
3.2.1 条件判断(if-else 与case-esac)
语法
If [ 条件判断式] ; then
执行内容
If
3.2.2 case...esac
语法
case $变量名称 in
“第一个变量”)
程序段
;;
“第二个变量”)
程序段
;;
*)
程序段
exit 1
;;
esac
3.3.3 循环(while 、until 、for )
语法
While [ ]
do
程序段
done
util [ ] do 程序段 done
for var in con1 con2 con3
3.3 实际案例
待更新。
四、Shell编程进阶之linux系统常用系统文件源码解读
待更新.
五、Shell编程实战之项目实战
待更新。
参考文献
鸟哥的私房菜之基础学习篇 第三版
马哥 linux 运维