Shell的基础介绍和案例
一、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的基础介绍和案例的更多相关文章
- 详细介绍Linux shell脚本基础学习
Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提.1. Lin ...
- Linux shell脚本基础学习详细介绍(完整版)二
详细介绍Linux shell脚本基础学习(五) Linux shell脚本基础前面我们在介绍Linux shell脚本的控制流程时,还有一部分内容没讲就是有关here document的内容这里继续 ...
- Linux shell脚本基础学习详细介绍(完整版)一
Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提.1. Lin ...
- shell脚本编程基础介绍
Linux系统——shell脚本编程基础介绍 1.什么是shell 它是一个命令解释器,在linux/unix操作系统的最外层,负责直接与用户对话,把用户的输入解释给操作系统,并处理各种操作输出的结果 ...
- 什么是Shell?Shell脚本基础知识详细介绍
这篇文章主要介绍了什么是Shell?Shell脚本基础知识介绍,本文是一篇Shell脚本入门文章,在本文你可学到什么是Shell.有多少种Shell.一个Shell脚本代码实例,需要的朋友可以参考下 ...
- Linux shell入门基础(六)
六.Shell脚本编程详解 将上述五部分的内容,串联起来,增加对Shell的了解 01.shell脚本 shell: # #perl #python #php #jsp 不同的脚本执行不同的文本,执行 ...
- 【转】Shell编程基础篇-下
[转]Shell编程基础篇-下 1.1 条件表达式 1.1.1 文件判断 常用文件测试操作符 常用文件测试操作符 说明 -d文件,d的全拼为directory 文件存在且为目录则为真,即测试表达式成立 ...
- 【转】Shell编程基础篇-上
[转]Shell编程基础篇-上 1.1 前言 1.1.1 为什么学Shell Shell脚本语言是实现Linux/UNIX系统管理及自动化运维所必备的重要工具, Linux/UNIX系统的底层及基础应 ...
- Erlang基础 -- 介绍 -- Wordcount示例演示
在前两个blog中,已经说了Erlang的历史.应用场景.特点,这次主要演示一个Wordcount的示例,就是给定一个文本文件,统计这个文本文件中的单词以及该单词出现的次数. 今天和群友们讨论了一个问 ...
随机推荐
- sql语句出错:Column count doesn't match value count at row 1
报错内容: java.sql.SQLException: Column count doesn't match value count at row 1 at com.mysql.jdbc.SQLEr ...
- 从零开始学 Web 之 CSS(五)可见性、内容移除、精灵图、属性选择器、滑动门
大家好,这里是「 Daotin的梦呓 」从零开始学 Web 系列教程.此文首发于「 Daotin的梦呓 」公众号,欢迎大家订阅关注.在这里我会从 Web 前端零基础开始,一步步学习 Web 相关的知识 ...
- Java并发编程笔记之CyclicBarrier源码分析
JUC 中 回环屏障 CyclicBarrier 的使用与分析,它也可以实现像 CountDownLatch 一样让一组线程全部到达一个状态后再全部同时执行,但是 CyclicBarrier 可以被复 ...
- VM虚拟机扩展硬盘容量
VM虚拟机扩展硬盘容量 第一步,关闭系统,给虚拟机硬盘增加空间. 第二步,启动系统.查看硬盘大小和分区情况. 第三步,分区. 第四步,格式化分区. 第五步,挂载. 第六步,开机自动挂载. 第一步: 当 ...
- 自己动手实现java数据结构(三) 栈
1.栈的介绍 在许多算法设计中都需要一种"先进后出(First Input Last Output)"的数据结构,因而一种被称为"栈"的数据结构被抽象了出来. ...
- [Luogu 3401] 洛谷树
Description 有一棵树,要求支持 查询两点间简单路径的所有子链的异或和的和 修改某条边的权值 Solution 这种树上异或问题首先应该想到对于每个点存下一个前缀异或和表示这个点到根节点路径 ...
- 多啦爱梦~多啦A梦CSS3测试源代码
先直接看图片,感觉一下!一直以来,我们都在说浏览器对CSS3支持度这个问题.可是,鉴于知识认识水平问题,又没几个人真正了解CSS3是什么东西,和它在网站显示上的重要性.现在好了,日本某位大神写了个CS ...
- Java中构造方法与setter方法
今天在重温Java的同时,一个不是问题的问题,突然地冒出来,不知道大家是不是和我一样,也有过这个比较尴尬的问题 不啰嗦了,那咱就直接说问题吧~~~ 那么首先我们在Java中都会写构造函数,目的是在 ...
- Java框架之Struts2(三)
一.几种国际化输出方式 国际化:国际化的本质,就是查找,替换.程序界面上输出的是国际化消息的 key 所对应的值.Struts2 中的国际化机制,会根据 key 到资源文件中找对应的文本来替换上面的k ...
- Fundebug前端JavaScript插件更新至1.2.0
摘要: Fundebug的前端JavaScript错误监控插件更新至1.2.0:支持监控WebSocket连接错误:修复了监控unhandledrejection错误的BUG,即未用catch处理的P ...