shell编程介绍
1.什么是shell?Shell是一个命令解释器,它的作用是解释执行用户输入 的命令及程序等,用户输入一条命令,Shell就解释执行 一条。这种从键盘一输入命令,就可以立即得到回应的 对话方式,被称之为交互的方式。 Shell存在于操作系统的最外层,负责直接与用户对话, 把用户的输入解释给操作系统,并处理各种各样的操作 系统的输出结果,输出到屏幕返回给用户,当我们输入 系统用户名和密码,登录到Linux后的所有操作都是由 Shell解释并执行的 ? 2.什么时候shell脚本?当命令或程序 语句不在命令行下执行,而是通过一个程序文件执行 时,该程序就被称为Shell脚本。如果在Shell脚本里内置 了很多条命令、语句及循环控制,然后一次性把这些命 令执行完,这种通过文件执行脚本的方式,称为非交互 的方式。Shell脚本类似于DOS系统下的批处理程序。用户 可以在Shell脚本中敲入一系列的命令及命令语句组合。 这些命令、变量和流程控制语句等有机地结合起来就形 成了一个功能强大的Shell脚本 cd /var/log cat /dev/null >messages echo "Logs cleaned up" 版本2:更完善的清除日志脚本(含命令,变量和控制语句) #!/bin/bash LOG_DIR=/var/log ROOT_UID=0 第一步:必须是root用户才能运行此脚本 if [ $UID -ne $ROOT_UID ] then echo "Must be root to run this script" exit 1 fi 第二步:成功切换目录,否则给出提示并终止脚本运行 cd ${LOG_DIR} || { echo "Cannot change to necessary directory" exit 1 } 第三步:成功清理日志,给出正确提示 cat /dev/null > messages && { echo "Logs cleaned up" exit 0 } 第四步:通关或失败,给出相应提示 echo "Logs cleaned fail" exit 1 2.1 shell脚本的分类2.1.1 Bourne shellBourne shell又包括Bourne shell (sh)、Korn shell (ksh)、Bourne Again Shell(bash)三种类型,重点是Bourne Again Shell(bash)。 Bourne Again Shell(bash) Bourne Again Shell即bash由GNU项目组开发,主要目标是与 POSIX标准保持一致,同时兼顾对sh的兼容,bash从csh和 ksh借鉴了很多功能,是各种Linux发行版默认配置的Shell, 在Linux系统上的/bin/sh往往是指向/bin/bash的符号链接。 虽然如此,bash和sh还是有很多的不同,一方面,bash扩展 了一些命令和参数,另一方面,bash并不完全和sh兼容,它 们有些行为并不一致,但大多数企业运维的情况下区别不 大,特殊场景可以使用bash替代sh 2.1.2 C shellC shell又包括csh、tcsh两种类型。csh由Berkeley 大学开发,随BSD UNIX发布,它的流程控制语句 很像C语言,支持很多Bourne Shell所不支持的功 能,例如:作业控制、别名、系统算术、命令历 史、命令行编辑等。tcsh是csh的增强版,加入 了命令补全等功能,在FreeBSD、Mac OS X等系 统上替代了csh。 2.2 Shell脚本语言和3P语言对比Shell脚本语言的优势在于处理偏操作系统底层的 业务,例如:Linux系统内部的很多应用,对于 一些常见的企业业务,使用Shell开发会更简单 快速,例如:让软件一键自动化安装、优化,监 控报警脚本,软件启动脚本,日志分析脚本等, 虽然PHP/Python语言也能够做到,但是,考虑到 掌握难度、开发效率、开发习惯等,它们可能就 不如用Shell脚本语言流行及有优势了。对于一些 常规的业务应用,使用Shell更符合Linux运维简 单、易用、高效的三大基本原则 Perl脚本语言,语法灵活、复杂,缺点是不易读, 团队协作困难,存世的大量相关程序软件(比如, xtrabackup热备工具、MySQL MHA集群高可用软件 等都有Perl语言的身影)。 Python是当下流行的语言,不但可以用于脚本程序 开发,也可实现Web程序开发(例如:CMDB管理系 统),还可以做软件开发(OpenStack)、游戏开 发、大数据开发、移动端开发。 2.3 常用操作系统的默认ShellCentOS和Red Hat下默认是Bourne Again Shell (Bash) 2.4 shell脚本的建立1.脚本的第一行 2.5 shell脚本的四种执行方法1.bash script-name或sh script-name 2.5.1 bash或sh与source或.执行脚本的区别source或.执行脚本,相当于在一个shell下执行脚本,互相可以调用 2.5.2 shell脚本的执行过程? 2.6 shell脚本编程规范和习惯1.开头加脚本解释器 2.附带作者及版权信息 3.脚本扩展名为*.sh 4.脚本存放在固定的目录下 5.脚本中不用中文 6.成对的符号一次书写完成 7.循环格式一次性输入完成 <wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;"> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |