一、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. 从零开始学 Web 之 移动Web(四)实现JD分类页面

    大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...

  2. 细说spring事务配置属性

    一.spring事务配置 1.spring配置 在配置数据源的下方配置 <!-- 事务配置 --> <bean id="transactionManager" c ...

  3. 逆向知识之CS辅助/外挂专题.2.实现CS1.6透视原理

    逆向知识之CS辅助/外挂专题.2.实现CS1.6透视原理 一丶透视简介 我们涉及到FPS游戏.免不了说透视.自瞄什么的. 在CS1.6中. 有OpenGl.也有D3D. 透视的方法很多. gl透视(也 ...

  4. apache伪静态配置(URL重写)

    1.打开apache配置文件 httpd.conf .2.开启rewrite模块,去掉注释# #LoadModule rewrite_module modules/mod_rewrite 3.让apa ...

  5. xmldocument内嵌入另一个xmldocument,xmlnode的方法

    string xmlstr1 = @"<root><head>myHead</head><body></body></roo ...

  6. DotNetCore学习-3.管道中间件

    中间件是用于组成应用程序管道来处理请求和响应的组件.管道内的每个组件都可以选择是否将请求交给下一个组件,并在管道中调用下一个组件之前和之后执行一些操作. 请求委托被用来建立请求管道,并处理每一个HTT ...

  7. Python3.7 数字之间下划线

    只是为了提高可读性,数值没变. >>> yes_votes = 42_572_6540 ; >>> yes_votes = 42_572_654099 ; > ...

  8. Java基础——Oracle(六)

    一.数据字典和动态性能视图 数据字典: oracle中的重要组成部分,提供了数据库的一些系统信息,记录了数据库的系统信息,它是只读表和视图的集合,数据字典的所有者为 sys 用户.用户只能在数据字典上 ...

  9. 移动端reset

    * { margin: 0; padding: 0;}article, aside, details, figcaption, figure, footer, header, hgroup, main ...

  10. 组件化和 React

    一,对组件化的理解 1,组件的封装 -视图 -数据 -变化逻辑(数据驱动视图变化) 例: import React, { Component } from 'react'; import List f ...