一、shell脚本基础

1、第一个脚本

vim  first.sh

分别使用三种方法可以执行脚本:

  ./first.sh (需要有可执行的权限)

  sh    first.sh

  .  first.sh(或source  first.sh

2、重定向与管道符

1)重定向输出(>)

2)重定向输出(>>追加)

3)重定向输入<

注明:将jerry用户的密码设置为123456

4)错误重定向(2>)

5)混合重定向输出(&>)

例如:在编译源码包的自动化脚本中,若要忽略make,make  install等操作过程的信息,可以将其定向到空文件/dev/null

先挂载光盘,将光盘的中的httpd-2.2.17.tar.gz文件解压到/usr/src下,编写脚本安装。

vim httpd_install.sh

chmod  +x httpd_install.sh (设置可执行权限)

./ httpd_install.sh    (执行脚本,等待结束后,查看结果)

6)管道符(|)

先查看以“/bin/bash”结尾的行

只输出用户名和登录的shell列

7)管道符(|):提取根分区的磁盘使用率信息

二、使用shell变量

1、定义新的变量

2、变量赋值的特殊操作

1)双引号使用(”):赋值的内容包含空格时

2)单引号使用(’):赋值的内容中包含$,  ‘’ ,  \等具有特殊含义的字符时

3)反撇号使用(`): 用于将某个命令的输出结果赋值给变量

4)$()来代替反撇号操作,可以解决嵌套的问题

5)read命令:用来提示用户输入信息,例如:

3、设置变量的作用范围

新定义的变量只在当前shell有效,如果想进入新的shell环境同样有效,就需要使用export命令将变量导出为“全局变量”

也可以在export导出全局变量的同时,也可以为变量赋值,例如:

4、数值变量的运算

 加(+),减(-),乘(\*),除(/),求模(%

三、特殊的shell变量

1、环境变量(系统自身就有)

环境变量系统安装好了就存在,不用创建,可以直接使用,查看一下环境变量

我们可以把脚本直接添加到$PATH搜索路径中去,这样执行脚本的时候就不用加./了

如:first.sh脚本在 /root目录下

2、位置变量(系统自身就有)

位置变量也称之为位置参数,使用$1,$2,$3,$4…..$9表示

3、预定义变量(系统自身就有)

$#(表示命令行中位置参数的个数)

$*(表示所有位置参数的内容)

$?(表示前一个命令执行后的返回状态,返回值为0表示执行正确,非0表示出现异常)

$0(表示当前执行的脚本或程序的名称)

如:编写一个备份的小脚本

四、综合案例

1、实验目标:远程备份mysql服务器的数据库

2、实验环境:

一共2台mysql服务器A和B,在B上远程备份A上的数据库,在A上建立数据库benet和accp,两台主机关闭防火墙。

(1)在服务器端A上创建两个数据库,分别benet和accp

(2)在服务器端A上建立一个专用的数据库用户,这里我使用root账户,授予root账户对可以通过远程主机192.168.1.200连接A

(3)在备份主机B上备份测试,查看是否备份成功。

(4)在备份主机B上编写脚本,之前需要创建备份目录mkdir  -p /opt/beifen,然后编写脚本。

vim  mysqlbak.sh

(5)设置x的权限,并执行备份脚本./mysqlbak.sh

(6)查看备份结果

(7)设置计划任务

mv  mysqlbak.sh /opt/beifen

crontab  -e

五、实验案例(二):

1、需求描述:

编写登录欢迎脚本welcome.sh

编写服务控制脚本start、stop、status

2、实现思路:

新建脚本程序welcome.sh,依次报告各种系统信息

修改配置文件~/.bash_profile,调用welcome脚本

新建脚本程序/root/bin/status,通过$1获取服务名称,并执行/etc/init.d/目录下的同名脚本

一、登录欢迎脚本welcome.sh

(1)vi   welcome.sh

(2)设置x的权限

(3)修改/root/.bash_profile文件,在root用户每次登录系统时用welcome.sh脚本程序。

vi /root/.bash_profile添加一行如下内容

(4)验证:使用root用户重新登录,验证欢迎脚本的输出信息

二、编写服务控制脚本start

(1)在/root下创建一个bin目录

mkdir  -p /root/bin

(2)在/root/bin下,编写一个脚本status.sh

vi  status.sh

(3)测试脚本

文章参考微信公众号:L宝宝聊IT

Shell的基础介绍和案例的更多相关文章

  1. 详细介绍Linux shell脚本基础学习

    Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提.1. Lin ...

  2. Linux shell脚本基础学习详细介绍(完整版)二

    详细介绍Linux shell脚本基础学习(五) Linux shell脚本基础前面我们在介绍Linux shell脚本的控制流程时,还有一部分内容没讲就是有关here document的内容这里继续 ...

  3. Linux shell脚本基础学习详细介绍(完整版)一

    Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提.1. Lin ...

  4. shell脚本编程基础介绍

    Linux系统——shell脚本编程基础介绍 1.什么是shell 它是一个命令解释器,在linux/unix操作系统的最外层,负责直接与用户对话,把用户的输入解释给操作系统,并处理各种操作输出的结果 ...

  5. 什么是Shell?Shell脚本基础知识详细介绍

    这篇文章主要介绍了什么是Shell?Shell脚本基础知识介绍,本文是一篇Shell脚本入门文章,在本文你可学到什么是Shell.有多少种Shell.一个Shell脚本代码实例,需要的朋友可以参考下 ...

  6. Linux shell入门基础(六)

    六.Shell脚本编程详解 将上述五部分的内容,串联起来,增加对Shell的了解 01.shell脚本 shell: # #perl #python #php #jsp 不同的脚本执行不同的文本,执行 ...

  7. 【转】Shell编程基础篇-下

    [转]Shell编程基础篇-下 1.1 条件表达式 1.1.1 文件判断 常用文件测试操作符 常用文件测试操作符 说明 -d文件,d的全拼为directory 文件存在且为目录则为真,即测试表达式成立 ...

  8. 【转】Shell编程基础篇-上

    [转]Shell编程基础篇-上 1.1 前言 1.1.1 为什么学Shell Shell脚本语言是实现Linux/UNIX系统管理及自动化运维所必备的重要工具, Linux/UNIX系统的底层及基础应 ...

  9. Erlang基础 -- 介绍 -- Wordcount示例演示

    在前两个blog中,已经说了Erlang的历史.应用场景.特点,这次主要演示一个Wordcount的示例,就是给定一个文本文件,统计这个文本文件中的单词以及该单词出现的次数. 今天和群友们讨论了一个问 ...

随机推荐

  1. Jstl标签汇总

    JSTL的核心标签库标签共13个,使用这些标签能够完成JSP页面的基本功能,减少编码工作. 从功能上可以分为4类:表达式控制标签.流程控制标签.循环标签.URL操作标签.  (1)表达式控制标签:ou ...

  2. mysql使其支持插入中文数据的办法

    1.找到安装的文件夹C:\Program Files (x86)\MySQL\MySQL Server 5.0 2.修改文件夹下的my.ini文件: 找到画黄线的这一字段 将后面改为utf8 这个过程 ...

  3. MySQL查看 InnoDB表中每个索引的高度

    我们都知道MySQL里,索引通常用B+树来实现的.B+树的叶子结点才具体保存数据(聚簇索引保存的是行数据:普通索引是主键,如有需要得回表),非叶子结点都是用来索引叶子结点的.假设索引高度为h,那么每次 ...

  4. 前后端分离demo 旅馆管理系统

    模型设计   旅馆管理系统,主要涉及到登记入住,退房以及客房和客人信息管理:经过分析抽像出涉及到的实体以及各实体之间的关系:   可以看出整个业务以客房为中心,入住,退房,定价,收费都是以客房为基本单 ...

  5. SQL查询语句如何能够让指定的记录排在最后

    方法如下:select * from <表名> order by case when <条件> then 1 else 0 end asc 举例:把threads表中列id值小 ...

  6. linux下如何批量杀JAVA进程或某个进程方法

    linux下如何批量杀JAVA进程或某个进程方法 在工作中经常需要停止JAVA进程,停止时间也比较长,那么有时候因为一些情况,需要把 linux 下JAVA所有进程 kill 掉,又不能用killal ...

  7. wcf json参数返回失败问题

    问题: 最近写了一个接口,提示连接失败,于是在本地发布了一下,然后模拟post请求进行本地调试,发现能正常进入接口,中间也没问题,一直走到最后一步return时,也能return,但是就是返回不了数据 ...

  8. blfs(systemd版本)学习笔记-编译安装sudo并创建普通用户配置sudo权限

    我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! blfs书中sudo的安装配置章节:http://www.linuxfromscratch.org/blfs/view/stab ...

  9. Sybase SQL anywhere5.5

    https://github.com/mono/old-code https://wiki.scn.sap.com/wiki/display/SQLANY/SQL+Anywhere+and+Micro ...

  10. layui 图片上传+表单提交+ Spring MVC

    Layui 的上传是最常用的, 不可或缺, 记录一下代码, 以后复制都能用!! 1.前端HTML: <div class="layui-form-item"> < ...