欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

Shell的基础介绍和案例

程序员文章站 2022-12-03 09:08:07
一、shell脚本基础 1、第一个脚本 vim first.sh 分别使用三种方法可以执行脚本: ./first.sh (需要有可执行的权限) sh first.sh . first.sh(或source first.sh) 2、重定向与管道符 1)重定向输出(>) 2)重定向输出(>>追加) 3) ......

一、shell脚本基础

1、第一个脚本

vim  first.sh

Shell的基础介绍和案例

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

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

  sh    first.sh

  .  first.sh(或source  first.sh

2、重定向与管道符

1)重定向输出(>)

Shell的基础介绍和案例

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

 Shell的基础介绍和案例

3)重定向输入<

 Shell的基础介绍和案例

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

4)错误重定向(2>)

 Shell的基础介绍和案例

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

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

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

vim httpd_install.sh

Shell的基础介绍和案例

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

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

6)管道符(|)

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

Shell的基础介绍和案例

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

 Shell的基础介绍和案例

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

 Shell的基础介绍和案例

二、使用shell变量

1、定义新的变量

 Shell的基础介绍和案例

2、变量赋值的特殊操作

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

Shell的基础介绍和案例

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

 Shell的基础介绍和案例

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

 Shell的基础介绍和案例

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

 Shell的基础介绍和案例

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

 Shell的基础介绍和案例

3、设置变量的作用范围

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

Shell的基础介绍和案例

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

 Shell的基础介绍和案例

4、数值变量的运算

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

Shell的基础介绍和案例

 Shell的基础介绍和案例

三、特殊的shell变量

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

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

 Shell的基础介绍和案例

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

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

Shell的基础介绍和案例

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

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

Shell的基础介绍和案例

Shell的基础介绍和案例

Shell的基础介绍和案例

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

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

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

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

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

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

 Shell的基础介绍和案例

Shell的基础介绍和案例

Shell的基础介绍和案例

Shell的基础介绍和案例

四、综合案例

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

2、实验环境:

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

Shell的基础介绍和案例

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

 Shell的基础介绍和案例

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

Shell的基础介绍和案例

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

 Shell的基础介绍和案例

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

vim  mysqlbak.sh

Shell的基础介绍和案例

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

(6)查看备份结果

Shell的基础介绍和案例

(7)设置计划任务

mv  mysqlbak.sh /opt/beifen

crontab  -e 

Shell的基础介绍和案例

五、实验案例(二):

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

Shell的基础介绍和案例

(2)设置x的权限

 Shell的基础介绍和案例

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

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

 Shell的基础介绍和案例

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

 Shell的基础介绍和案例

二、编写服务控制脚本start

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

mkdir  -p /root/bin

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

vi  status.sh

Shell的基础介绍和案例

(3)测试脚本

Shell的基础介绍和案例

 

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