Shell编程规范与变量
前言
随着 Linux 系统在企业中的应用越来越多,服务器的自动化管理也变得越来越重要。
在 Linux 服务器的自动化维护工作中,除了计划任务的设置以外,Shell 脚本的应用也是非常重要的一部分。
1.shell与shell脚本区别
Shell:就是一个命令行解释器,它的作用就是遵循一定的语法将输入的命令加以解释并传给系统
shell脚本:,即将各类命令预先放入到一个文件中,方便一次性执行的一个程序文件,效率极高
shell脚本概述
在一些复杂的Linux维护工作中,大量重复性的输入和交互操作不但费时费力,而且容易出错
而编写一个恰到好处的shell脚本程序,可以批量处理,自动化的完成一系列维护任务,大大减轻管理员的负担将要执行的命令按顺序保存到一个文本文件,给该文件可执行权限
,可结合各种Shell控制语句以完成更复杂的操作。
1.shell的作用
Shell 是一个应用程序,它连接了用户和 Linux 内核(翻译官将用户语言转化成2进制语言),让用户能够更加高效、安全、低成本地使用 Linux 内核,这就是 Shell 的本质。
登录后默认使用shell程序,一般为/bin/bash
不同的Shell的内部指令,运行环境等会有所区别
前两个都是bash的软链接,记住bin/bash就行
注:nologin:位置在/user/sbin ,这个shell可以让用户无法登陆主机
2.shell脚本的作用
自动化完成软件的安装部署,如部署lamp架构
自动化完成系统管理,如批量添加用户
自动化完成备份,如数据库定时备份
自动化进行分析处理,如网站访问量
2.shell脚本应用场景
shell脚本应用场景
重复性操作
交互性任务
批量事务处理
服务运行状态监控
定时任务执行
3.如何学习shell脚本(给予初学者的一些建议)
熟悉掌握各种Linux命令
掌握脚本的标准格式
掌握脚本的基本语法
4.shell的构成
第一行为"#!/bin/bash",脚本申明(默认解释器):表示此行以下的代码语句是通过/bin/bash程序来执行。还有其他类型的解释器,并且以.sh为结尾
比如#!/usr/bin/python,#!/usr/bin/expect
注释信息:以“#”开头的语句表示为注释信息,被注释的
与语句在脚本运行时不会被执行,可执行语句:如echo命令,用于输出""之间的字符串
案例:
编写脚本代码
使用vim
每一行Linux命令,按照顺序依次编写
赋予编写完成后的shell脚本文件可执行权限,使得脚本具有可执行性
以上编辑内容包括三条命令,实现了查看/boot目录中以vml开头的文件包括…,实现了“半自动化过程”
".sh"的作用是是一种标识,方便你和他人辨认这是一条shell脚本文件
如果不赋予权限的话会出现这种情况
但是用bash 或source不赋权可以
利用chmod +x +文件 赋权之后就OK啦
如果我们不用shell脚本来做这个例子:
相较于自动化脚本肯定相对麻烦,在我们的运维生涯中可以减轻工作量。
综上:脚本执行通常有三种执行方式
方法一:当前路径(决定路径与相对陆行)下执行脚本
(要有执行权限)
/home/test.sh或者 ./test.sh
方法二:sh,bash脚本文件路径(无需权限
bash test.sh
方法三:source脚本文件路径(可以没有执行权限)
source test.sh
还有一种利用echo(用于输出字符串)的更加完善的表现脚本方法
添加更多人性化,友好一点的提示信息在里面,容易你复盘,以及别人读懂
重定向与管道操作
shell脚本的特点是批量自动化处理,且操作过程位于后台,不需要用户在操作过程中有任何干预
那么你怎么能快速的找到自己想要的信息呢?这个往往在排错的时候很关键
因此学会提取和过滤执行信息非常重要!
这个时候就需要用到重定向和管道操作
交互式硬件设备
标准输入:从该设备接收用户输入的数据
标准输出:通过该设备向用户输出数据
标准错误:通过该设备报告执行出错信息
以上都是默认使用键盘和显示器作为关联的设备,与操作系统进行交互,完成最基本的输入和输出操作
从键盘接收用户输入的各种命令字串、辅助控制等信息并将结果输出到屏幕上;如果命令出错,也会反馈错误信息到屏幕
可以改变输入、输出内容的方向,而不使用默认的标准输入、输出设备(键盘和显示器),这种操作称之为“重定向”
重定向操作
重定向输出 >>不覆盖
&和&符号