Shell脚本编程

  • A+
所属分类:源码

W3Cschool上的一篇文章是这样介绍Shell的,如下图所示。

虽然这个脚本只有一行,我们在手动打也可以,但是如果我是一个数据库备份的很长的脚本呢?每天3点增量备份数据库一次(全量备份是备份所有,增量只备份前一次备份过后增加的数据),而且代码很长,你作为程序员会每天3点去打一段很长的代码?我们把它写成脚本做成计划任务多方便啊。

echo命令用于向窗口输出文本。

就是因为要经常的读取,所以~/.bashrc文件只定义一些终端机设置以及shell提示符号等功能,而不是定义环境变量。

hello="helloworld"echo$helloecho"helloworld!"

**4.2、Shell编程中的变量名的命名的注意事项:***命名只能使用英文字母,数字和下划线,首个字符不能以数字开头,但是可以使用下划线(_)开头。

因为sh和bash在这方面很弱,比如说:*它的函数只能返回字串,无法返回数组*它不支持面向对象,你无法实现一些优雅的设计模式*它是解释型的,一边解释一边执行,连PHP那种预编译都不是,如果你的脚本包含错误(例如调用了不存在的函数),只要没执行到这一行,就不会报错环境兼容性如果你的脚本是提供给别的用户使用,使用sh或者bash,你的脚本将具有最好的环境兼容性,perl很早就是linux标配了,python这些年也成了一些linux发行版的标配,至于macos,它默认安装了perl、python、ruby、php、java等主流编程语言。

*不能使用标点符号。

Shell变量中有一部分是环境变量,有一部分是局部变量,这些变量保证了Shell的正常运行**常用的环境变量:**>PATH决定了shell将到哪些目录中寻找命令或程序>HOME当前用户主目录>HISTSIZE历史记录数>LOGNAME当前用户的登录名>HOSTNAME指主机的名称>SHELL当前用户Shell类型>LANGUGE语言相关的环境变量,多语言可以修改此环境变量>MAIL当前用户的邮件存放目录>PS1基本提示符,对于root用户是,对于普通用户是$**使用Linux已定义的环境变量:**比如我们要看当前用户目录可以使用:`echo$HOME`命令;如果我们要看当前用户Shell类型可以使用`echo$SHELL`命令。

注意,一定要写成`./helloworld.sh`,而不是`helloworld.sh`,运行其它二进制的程序也一样,直接写`helloworld.sh`,linux系统会去PATH里寻找有没有叫helloworld.sh的,而只有/bin,/sbin,/usr/bin,/usr/sbin等在PATH里,你的当前目录通常不在PATH里,所以写成`helloworld.sh`是会找不到命令的,要用`./helloworld.sh`告诉系统说,就在当前目录找。

因为脚本在执行时多了一道翻译的过程,所以它比二进制程序执行效率要稍低一些,而用c语言写成的程序,都必须通过编译链接,生成机器能认识的二进制文件,才能运行,他不是一种解释性的语言。

这个东西官方的叫法叫做shebang。

业界所说的shell通常都是指shell脚本,但读者朋友要知道,shell和shellscript是两个不同的概念。

****shell简单、灵活、高效,特别适合处理一些系统管理方面的小问题****shell可以实现自动化管理,让系统管理员的工作变得容易、简单、高效****shell可以把一些经常需要用的命令或者操作,以文件的形式存储起来,每一次调用即可,不用重复的键入命令**shell脚本可移植性好,在unix/linux系统中可灵活移植,几乎不用任何设置就能正常运行shell脚本可轻松方便读取和修改源代码,不需要编译掌握shell可以帮你解决一些故障问题,比如脚本引起的故障问题掌握shell是一个中级以上系统工程师必需要会的掌握shell是你系统管理进阶的必经之路掌握shell是你面试更高级职位的一块敲门砖**(2)那什么时候不使用Shell脚本?**资源密集型的任务,尤其在需要考虑效率时(比如排序,hash等)**需要处理大任务的数学操作,尤其是浮点运算,精确运算,或者复杂的算术运算(这种情况一般使用C++或FORTRAN来处理)**有跨平台移植需求(一般使用C或Java)**复杂的应用,在必须使用结构化编程的时候(需要变量的类型检查,函数原型,等等)**对于影响系统全局性的关键任务应用。

课时列表**第一章:shell脚本编程-变量-算术表达式-判断语句-if分支语句**课时1:足球外围平台哪家正规基本语法-变量使用方法课时2:算术表达式-test测试语句-if流程控制语句**第二章:case-for-While-双括号-循环嵌套-break-continue**课时3:shell基本语法课时4:case-for-while语句使用方法课时5:shell中双小括号的使用方法课时6:shell循环嵌套使用方法课时7:shell流程控制语句及break-continue使用方法**第三章:shift命令-shell函数-shell脚本实战**课时8:shift命令使用方法课时9:shell函数使用方法课时10:mysql数据库自动备份脚本课时11:zip包自动解压缩脚本..............................详细学习路线图如下:!(https://pic2.zhimg.com/50/v2-a0f4c602f63a71b21c511700dcb3f6bc_720w.jpg?source=1940ef5c)!()**课程免费学习地址**以上就是Shell的学习课程,希望可以帮到您!**更多技术干货敬请关注云栖社区知乎机构号:阿里云云栖社区-知乎**本文为云栖社区原创内容,未经允许不得转载。

在一般情况下,人们并不区分BourneShell和BourneAgainShell,所以,像**!/bin/sh**,它同样也可以改为**!/bin/bash**。

bashBash是Bourneshell的替代品,属GNUProject,二进制文件路径通常是/bin/bash。

-ne|检测两个数是否不相等,不相等返回true。

不同的指令集的汇编语言和对应的机器码都是不一样的,x86复杂指令集是一套,arm精简指令集又是另一套,所以需要编译的语言移植性会不太好,但是会有交叉编译可以解决移植性问题。

不同语言的代码的执行方式以前就讲过,我们用的那个黑乎乎的shell叫做bashshell,里面执行bash脚本没有问题,但是很多时候我们可能有其它编程语言的需求,比如python等,这时候我们安装一个python的解释器,也是可以在bashshell里面执行python的脚本的,不过需要指定解释器,而bash脚本不需要指定解释器,因为本身就是在bashshell里面。

脚本简单地说就是一条条的文字命令,这些文字命令是可以看到的(如可以用记事本打开查看、编辑),脚本程序在执行时,是由系统的一个**解释器**,将其一条条的翻译成机器可识别的指令,并按程序顺序执行。

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: