一、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. 记录一个简单的dbcp数据连接池

    这个示例用到了ThreadLocal与dbcp,我觉得有点意思,就整理了下.使用dbcp,肯定要导入commons-dbcp.jar包.下面直接贴DBUtil代码: public class DBUt ...

  2. 关于springmvc json交互产生的406错误

    产生错误的背景:springmvc使用<mvc:annotation-driven>进行配置,那么只要引入响应的json解析包就可以了.在pom中已经引入了如下: <dependen ...

  3. 自己动手实现java数据结构(三) 栈

    1.栈的介绍 在许多算法设计中都需要一种"先进后出(First Input Last Output)"的数据结构,因而一种被称为"栈"的数据结构被抽象了出来. ...

  4. CynosDB技术详解——存储集群管理

    本文由腾讯云数据库发表 前言 CynosDB是架构在CynosFS之上的分布式关系数据库系统,为最大化利用存储资源,平衡资源之间的竞争,检查资源使用情况,需要一套高效稳定的分布式集群管理系统(SCM: ...

  5. 如何做自己的服务监控?spring boot 2.x服务监控揭秘

    Actuator是spring boot项目中非常强大一个功能,有助于对应用程序进行监视和管理,通过 restful api请求来监管.审计.收集应用的运行情况,针对微服务而言它是必不可少的一个环节. ...

  6. Mybatis之分页插件pagehelper的简单使用

    最近从家里回来之后一直在想着减肥的事情,一个月都没更新博客了,今天下午没睡午觉就想着把mybatis的分页插件了解一下,由于上个月重新恢复了系统,之前创建的项目都没了,又重新创建了一个项目. 一.创建 ...

  7. python argparse(参数解析模块)

    这是一个参数解析,可以用它快捷的为你的程序生成参数相关功能 import argparse(导入程序参数模块) # 创建argparse对象,并将产品简要说明加入show = '程序说明' ===&g ...

  8. GridView控件的属性、事件

    GridView控件的属性 属性 描述 AllowPaging 指示该控件是否支持分页. AllowSorting 指示该控件是否支持排序. AutoGenerateColumns 指示是否自动地为数 ...

  9. Swagger2限定接口范围

    前面在使用Swagger2时遇到的坑中简单介绍了Swagger的使用. 不过默认情况下,Swagger2会把项目中的所有接口都展示在列表里,特别是你用了Springboot/SpringCloud之后 ...

  10. JDK动态代理与CGLib动态代理相关问题

    导读: 1.JDK动态代理原理是什么?为什么不支持类的代理? 2.JDK动态代理实例 3.CGLib代理原理是什么? 4.CGLib代理实例 5.JDK动态代理与CGLib代理的区别是什么? 6.总结 ...