前言
1.Shell脚本概述?2.Shell脚本变量?
1.shell脚本的概念
1.1Shell脚本概述
1)Shell脚本的概念 将要执行的命令按顺序保存到一个文本文件 给该文件可执行权限 可结合各种Shell控制语句以完成更复杂的操作 2)Shell脚本应用场景 重复性操作 交互性任务 批量事务处理 服务运行状态监控 定时任务执行
1.2shell脚本编程规范与变量
1)Shell是一个命令解释器,它在操作系统的最外层,负责直接与用户进行对话,把用户的输入解释给操作系统,并处理各种各样的操作系统的输出结果,输出到屏幕反馈给用户。这种对话方式可是交互也可以是非交互式的,我们所输入的命令计算机是不识别的,这时就需要一种程序来帮助我们进行翻译,变成计算机能识别的二进制程序,同时又把计算机生成的结果返回给我们。 2) shell 的作用 Linux系统中的Shell是一个特殊的应用程序,它介于操作系统内核与用户之间,充当了一个""命令解释器"的角色,负责接收用户输入的操作指令(命令)并进行解释,将需要执行的操作传递给内核执行,并输出执行结果。 常见的 Shell解释器程序有很多种,使用不同的 Shell时,其内部指令、命令行提示符等方面会存在一些区别。通过/etc/shells文件可以了解当前系统所支持的Shell脚本种类。 [ root@localhost ~]#cat /etc/ shells /bin/sh#是bash命令的软链接(已经被/bin/bash所替换)/bin/bash基准于GNJ的框架下发展出的Shell。 /usr/bin/sh已经被bash所替换。 /usr/bin/bash #centos和redhat系统默认使用bash shell /bin/tcsh #csh的增强版,与csh完全兼容整合了csh,提供更多的功能。/bin/csh #已经被/bin/bash所替换(整合c shell,提供更多的功能) 注: nologin:奇怪的shell,这个shell可以让用户无法登录主机。 bash ( /bin/bash)是目前大多数Linux版本采用的默认Shell。
为什么我们的系统上合法的shell要写入/etc/shells这个文件? 这是因为系统某些服务在运行过程中,会去检查用户能够使用的shells,而这些shell的查询就是借由/etc/shells这个文件。
用户什么时候可以取得shell来工作?还有我这个默认会取得哪一个shell? 当我登录的时候,系统就会给我shell让我来工作,而这个登录取得的shell就记录在/etc/passwd这个文件内。
不同的shell具备不同的功能,shell还决定了Linux中默认的shell是/bin/bash,流行的shell有ash、bash、ksh、csh、zsh等,不同的shell都有自己的特点以及用途 目前大多数linux系统默认使用的是bash shell,默认登陆shell是/bin/bash,可以查看/etc/passwd文件里注明 这个shell是针对用户而言的,可以查看/etc/passwd里面的最后的字段使用的是哪个shell,如果想要修改可以用chmod -s或者chsh-z来重新指定
- shell脚本是什么
shell脚本就是说我们把原来 linux 命令或语句放在一个文件中,然后通过这个程序文件去执行时,我们就说这个程序为shell 脚本或shell程序;我们可以在脚本中输入一系统的命令以及相关的语法语句组合,比如变量,流程控制语句等,把他们有机结合起来就形成了一个功能强大的shell 脚本 总结:将需要执行的命令保存到一个文件中,按照顺序执行,它不需要编译,它是解释型的。
4 ) shell脚本能干什么 自动化完成软件的安装部署,如安装部署LAMP架构服务 自动化完成系统的管理,如批量添加用户 自动化完成备份,如数据库定时备份 自动化的分析处理,如网站访问量
- shell脚本使用场景
在需要完成大量复杂、重复性的工作时,不需要在命令行重复执行命令,直接运行shell脚本即可,大大的节省了时间提高了效率
6)如何学习shell脚本 熟悉掌握各种linux命令 掌握脚本的标准格式 掌握脚本的基本语法
2.shell脚本的构成
第一行为"#! /bin/basi" ,脚本申明(默认解释器)∶表示此行以下的代码语句是通过/bin/bash程序来执行。还有其他类型的解释器,比如#!/usr/bin/python、# !/usr/bin/expect 注释信息:以"#”开头的语句表示为注释信息,被注释的语句在脚本运行时不会被执行可执行语句:如echo命令,用于输出""之间的字符串
下面开始编写脚本
vim first.sh
cd / boot/pwd
ls -lh vml*
[ root@localhost ~]
pwd
ls -lh vml*
添加echo
创建shell 程序的步骤: 第一步:创建一个包含命令和控制结构的文件。 第二步:修改这个文件的权限使它可以执行#使用chmod +x test.sh第三步:检测语法错误 第四步:执行./first.sh
shell脚本执行 shell 脚本的执行通常有以下几种方式 方法一:当前路径(决定路径与相对路径)下执行脚本(要有执行权限) / home / first.sh或者./first.sh 方法二:sh . bash脚本文件路劲(这种方式可以不对脚本文件添加执行限) bash first.sh或sh first.sh 方法三: source脚本文件路劲(可以没有执行权限) source first.sh 方法四:其他方法 sh < first.sh或者cat first.sh | sh (bash)
3.重定向与管道操作
重定向: 用户通过操作系统处理信息的过程中,包括以下几类交互设备文件 标准输入(STDIN):默认的设备是键盘,文件编号为0,命令将从标准输入文件中读取在执行过程中需要的输入数据。 标准输出(STDOUT):默认的设备是显示器,文件编号为1,命令将执行后的输出结果发送到标准输出文件。 标准错误(STDERR):默认的设备是显示器,文件编号为2,命令将执行期间的各种错误信息发送到标准错误文件。 从键盘接收用户输入的各种命令字串、辅助控制信息,并将命令结果输出到屏幕上;如果命令执行出错,也会将错误信息反馈到屏幕上
1)重定向输出 重定向输出指的是将命令的正常输出结果保存到指定的文件中,而不是直接显示在显示器的屏幕上。重定向输出使用">“或”>>"操作符号,分别用于覆盖或追加文件 若重定向输出的目标文件不存在,则会新建该文件,然后将前面命令的输出结果保存到该文件中;若目标文件已经存在, 则将输出结果覆 盖或追加到文件中。
意思是当原来文件中有内容的话,原来的内容会被覆盖掉
意思是当原来文件中有内容的话,新加的内容会追加到里面而不会覆盖原来的内容
列1
uname -p > kernel.txt
cat kernel.txt
列2
uname -r >> kernel.txt
cat kernel.txt
2)重定向输入 重定向输入指的是将命令中接收输入的途径由默认的键盘改为指定的文件,而不是等待从键盘输入。重定向输入使用"<“操作符。通过重定向输入可以使一些交互式操作过程能够通过读取文件来完成。例如,使用passwd 命令为用户设置密码时,每次都必须根据提示输入两次密码字串,非常烦琐,若改 用重定向输入将可以省略交互式的过程,而自动完成密码设置(结合 passwd 命令的”–stdin”选项来识别标准输入)
列1
100%
vim pass.txt
4.Shell自定义变量
4.1Shell变量的作用、类型
1)变量的作用 用来存放系统和用户需要使用的特定参数(值) 变量名:使用固定的名称,由系统预设或用户定义 变量值:能够根据用户设置、系统环境的变化而变化 2)变量的类型 自定义变量:由用户自己定义、修改和使用 特殊变量:环境变量,只读变量,位置变量,预定义变量
4.2自定义变量
1)定义一个新的变量 变量名以字母或下划线开头,区分大小写,建议全大写 变量名=变量值 2)查看变量的值 echo$变量名
[root@localhost ~]
[root@localhost ~j
[root@localhost ~]
Python
[root@localhost ~]
Python 2.7.13
4.3自定义变量
1)赋值时使用引号 双引号:允许通过
符
号
引
用
其
他
变
量
值
单
引
号
:
禁
止
引
用
其
他
变
量
值
,
符号引用其他变量值 单引号:禁止引用其他变量值,
符号引用其他变量值单引号:禁止引用其他变量值,视为普通字符 反撇号:命令替换,提取命令执行后的输出结果 2)从键盘输入内容为变量赋值
read [-p "提示信息"]变量名
4.4自定义变量
1)设置变量的作用范围
格式1: export变量名
格式2:export变量名=变量值...
[root@localhost ~]
导出为全局变量
[root@localhost ~]
[root@localhost ~]
[root@localhost ~]
[root@localhost ~]
子程序引用全局变量
5.数值变量的运算及特殊变量
在 Bash Shell环境中,只能进行简单的整数运算,不支持小数运算 整数值的运算主要通过内部命令expr进行 运算符与变量之间必须有至少一个空格。 运算内容:加(+)、减(一)、乘(*)、除(/)、取余(号)运算符号:
(
(
)
)
和
(())和
(())和[] 运算命令: expr和let运算工具: bc(系统白带)
expr命令(不仅可以运算,还支持输出到屏幕〉常用的几种运算符如下所述。 +:加法运算。 -:咸法运算。 :乘法运算,注意不能仅使用""符号,否则将被当成文件通配符。 I/:除法运算。 %:求模运算,又称为取余运算,用来计算数值相除后的余数。
例1
[ root@server myscripts]
2
[ root@server myscripts]
f root@server myscripts]
expr:语法错误
[ root@server myscripts]
[root@server myscripts]
expr不仅支持常量还支持变量的运算:例2
[ root@localhost ~]
[ root@localhost ~]
[ root@localhost ~]
[ root@localhost ~]
[ root@localhost ~]
[ rootelocalhost ~]
[ root@localhost ~]
例3
sum=`expr $Y \* $Y \* $Y `
echo $sum
例4
read -p "请输入第一个数字:" num1read -p "请输入第二个数字:" num2
expr $num1 + $num2
echo "求和数:$sum"
总结
1)Shell脚本概述 Shell的作用 Shell编程规范 重定向与管道 2)Shell脚本变量 自定义变量 特殊变量
|