Linux网络服务与shell脚本——Shell编程规范与变量

                              第七章 Shell编程规范与变量

一、Shell编程规范
1、Shell脚本应用场景
Shell脚本就是将要执行的命令按顺序保存到一个文本文件,并给予可执行权限,方便一次性执行的一个程序文件。
常用于重复性操作、批量事物处理、自动化运维、服务运行状态监控、定时任务执行等。
2、Shell编程规范
(1)通过/etc/shells文件可了解当前系统所支持的Shell脚本种类,其中/bin/bash是目前大多数Linux版本采用的默认Shell脚本
(2)第一行:#!/bin/bash。表示此行以后的语句通过/bin/bash程序来执行,其他以#开头的语句表示注释信息
3、管道与重定向
(1)管道操作
管道操作为不同命令之间的协同工作提供了一种机制,它将左侧命令输出结果作为右侧命令的输入对象
(2)重定向操作
①标准输入(stdin):默认的设备是键盘,文件编号为0
②标准输出(stdout):默认设备是显示器,文件编号为1
③表春错误(stderr):默认设备为显示器,文件编号为2
重定向输入:<
⑤重定向输入出
1)>:覆盖输出
2)>>:追加输出
⑥错误重定向:
1)2>:覆盖输出
2)2>>:追加输出
3)&>:将正常及错误信息混合输出

二、Shell脚本变量揭秘
变量是用一个用固定字符串代替更多更复杂的内容。由变量名与变量值构成。
变量名:使用固定的名称,由系统预设或用户自定义
变量值:能够根据用户设置、系统环境的变化而变化
类型:自定义变量、环境变量、位置变量、预定义变量
1、自定义变量
自定义变量是由系统用户自己定义的变量,只在用户自己的Shell环境中有效,因此也称为本地变量
(1)自定义新的变量
格式:变量名=变量值(等号两边无空格
变量名:以字母或下划线开头,不能包含特殊字符(+、-、*、/等)
(2)查看和引用变量的值
①在变量名前添加$可以引用变量的值
②使用echo命令查看变量值
③例:echo $bianliang
当变量名容易跟后面的字符混淆时,需添加大括号将其括起来
⑤例:echoi ${bianliang}4.5
(3)变量赋值的特殊操作
双引号(“”):主要起界定字符串的作用,特别是要赋值的内容中包括空格时
1)在双引号范围内,使用$可以引用其他变量,如QQ=”QQ $version”
单引号(‘):当要赋值的内容包含$、”、\等具有特殊含义的字符时,应使用单引号括起来。
1)单引号内无法引用其他变量,任何字符都将作为普通字符看待
2)当赋值内容中包含单引号时,需使用\符号进行转义
反撇号(`)主要用于命令替换,允许将执行某个命令的屏幕输出结果赋值给变量
1)反撇号括起来的范围内必须是能够执行的命令,否则将会出错
2)例:DenyLis=`ls -lh /boot`
read命令:用来提示用户输入信息,可将输入信息赋值给变量
1)格式:read 变量名(将输入值赋值给该变量)
2)-p:可增加提示信息如read -p “请输入test的值:” test
3)-t:设置等待时间,单位为秒。超时后关闭输入,运行后续操作
(4)设置变量的作用范围
默认情况下新定义的变量只在当前shell环境中有效,因此称为局部变量,当进去子程序或新的子shell环境时,局部变量将无法再使用
通过Export命令,可将指定变量导出为全局变量。可同时指定多个变量,用空格分隔:export one two
(5)数值变量的运算
①通过expr命令进行运算
②只能进行简单的证书预算,不支持小数运算
格式:expr 变量1 运算符 变量2(运算符与变量之间至少需要一个空格
④是哟expr计算时,变量必须是整数,不能是字符串或小数

2、特殊变量
(1)环境变量
①由系统提前创建,用于设置用户的工作环境
②配置文件:/etc/profile(全局配置、可用作开机启动项设置)  ~/.bash_profile(用户配置)
③常见环境变量:PWD、PATH、USERS、SHELL、HOME
(2)位置变量
$n:n为1-9,表示执行脚本时后面所跟的参数值(用空格分隔
(3)预定义变量
①由Bash程序预先定义好的一类特殊变量,用户只能使用而不能创建和修改
②常见的预定义变量
1)$#:表示命令行中位置参数的个数
2)$*:表示所有位置参数的内容
3)$?:表示前一条命令执行后的返回状态,0位正常,非0为异常
4)$0:表示当前执行的脚本或程序的名称

三、练习题
1、滤出网卡的MAC地址,并复制给HWaddr


2、计算两个数的平方和


3、根据Free命令结果计算内存占用率


4、统计/etc、/var、/usr目录中共有多少个一级子目录和文件


5、实现每日将/etc目录备份到/root/etcYYYY-mm-dd中


6、显示当前主机系统信息,包括主机名、IPV4地址,操作系统内核版本,CPU型号,内存大小,硬盘大小


7、通过位置变量创建Linux系统账号及密码


8、每周5使用tar命令备份/var/log下的所有日志文件



 

发布了40 篇原创文章 · 获赞 15 · 访问量 3480

猜你喜欢

转载自blog.csdn.net/lkolkolkol/article/details/103674913