标签:oca 覆盖 roo com tar 权限 减法 mic 提示信息
shell编程规范与变量? Shell脚本就是将要执行的命令按照顺序保存到一个文本文件,并给该文件可执行权限,方便一次性执行的一个程序文件。主要是方便管理员进行设置或管理,可结合各种shell控制语句以完成更复杂的操作。常用于重复性操作、批量事务处理、自动化运维、服务运行状态监控、定时任务执行等。
命令解释器 : 介于系统内核与用户之间,负责解释命令行
使用vim文本编辑器
每行一条Linux命令,按执行顺序依次编写
脚本后缀为.sh
例如,将以下三条命令按顺序用shell脚本编写
cd /boot/
pwd
ls -lh vml*
[root@localhost ~]# vim 1.sh
#!/bin/bash
cd /boot/
pwd
ls -lh vml*
写好之后按 :wq 保存退出,再执行脚本。在执行脚本之前,需要赋予可执行权限
chmod +x 1.sh
方法一: sh脚本文件路径
? 方法二 :source脚本文件路径
方法三:脚本文件路径(绝对路径与相对路径),必须有x权限
没有权限时,三种方式, sh和source可以执行,./ 不可以执行;有权限时,四个都可以执行。
脚本声明
注释信息
[root@localhost ~]# vim 1.sh
#!/bin/bash
#This is my first Shell-Script. `脚本的表述信息`
cd /boot
echo "当前的目录位于:" `输出友好提示信息`
pwd
echo "其中以vml开头的文件包括:" `输出友好提示信息`
ls -lh vml*
将左侧的命令输出结果,作为右侧命令的处理对象。管道操作通常用来过滤所需要的关键信息。
? 1)例如:使用grep命令查询使用“/bin/bash/”作为shell的用户名称时,会输出符合条件的整行内容,结合管道操作与awk命令过滤,只输出用户名和登录shell列。
awk :按列读取数据
sed :按行读取数据
grep 、 egrep : 过滤关键词
$1, $7 :位置变量
? 2)例如:提取根分区(/)磁盘使用率信息
为灵活管理Linux系统提供特定参数,有两层意思
变量名:使用固定的名称,由系统预设或用户定义
变量值:能够根据用户设置,系统环境的变化而变化
自定义变量:由用户自己定义,修改和使用
环境变量:由系统维护,用于设置工作环境
位置变量:通过命令行给脚本程序传递参数
预定义变量:bash中内置的一类变量,不能直接修改
? 1)定义一个新的变量, 变量名以字母或下划线开头,区分大小写,建议全大写
变量名=变量值 -----> 将右边的值赋予左边
? 2)查看变量的值: echo $变量名
例如:
? 3)赋值时使用引号
双引号:允许通过$符号引用其他变量值
单引号:禁止引用其他变量值,$视为普通字符
? 4)从键盘输入的内容为变量赋值
? read [-p "提示信息" ] 变量名
[root@localhost opt]# vim demo.sh
#!/bin/bash
#This is my first shell-script
read -p "请输入一个整数:" score
echo "你的成绩为 $score"
[root@localhost opt]# chmod +x demo.sh
[root@localhost opt]# ./demo.sh
请输入一个整数:99
你的成绩为 99
? 5) 设置变量的作用
? 格式1:export 变量名...
? 格式2 :export 变量名 = 变量值...
[root@localhost opt]# num=`ps aux | wc -l`
[root@localhost opt]# echo $num
156
[root@localhost opt]# bash ‘设置变量作用范围‘
[root@localhost opt]# echo $num
‘显示不出来‘
[root@localhost opt]# exit ‘退出变量范围‘
exit
[root@localhost opt]# echo $num
156
[root@localhost opt]# export num ‘使用export设置变量‘
[root@localhost opt]# bash ‘变量范围‘
[root@localhost opt]# echo $num ‘生效‘
156
6)整数变量的运算
? expr 变量1 运算符 变量2 [运算符 变量3]
? 加法运算:+
? 减法运算:-
? 乘法运算:*
? 除法运算:/
? 求模(取余)运算:%
配置文件:/etc/profile,~/.bash_profile
常见的环境变量
PWD, PATH, USER, SHELL , HOME
? 表示为$n, n为1~9之间的数字
[root@localhost ~]# vim 1.sh
#!/bin/bash
#This is my first Shell-Script.
sum=0
sum=`expr $1 + $2`
echo "总和为$sum"
[root@localhost ~]# ./1.sh 20 30 `定义$1,$ 两个数字`
总和为50
? $# :命令行中位置变量的个数
? $* :所有位置变量的内容
? $? :上一条命令执行后返回的状态,当返回状态值为0时表示正常,非0值表示执行异常或出错
? $0 :当前执行的进程/程序名
[root@localhost opt]# vim 1.sh
#!/bin/bash
TARFILE=beifen-`date +%s`.tgz ‘设置变量名称,+%s表示从1970至今经过的秒数,所以文件名不会出现重复的情况,就不会有被覆盖的风险‘
tar zcvf $TARFILE $* &> /dev/null ‘tar工具压缩输出到 /dev/null‘ (/dev/null 相当于黑洞,放进去的信息找不回)
echo "已执行$0个脚本" ‘当前执行的进程名‘
echo "共完成$#个对象的备份" ‘位置变量的个数‘
echo "具体内容包括:$*" ‘所有位置变量的内容‘
[root@localhost opt]# ./1.sh /etc/passwd /etc/shadow
已执行./1.sh个脚本
共完成2个对象的备份
具体内容包括:/etc/passwd /etc/shadow
总结:1、shell脚本的内容构成由环境声明、注释文字、执行语句。
? 2、重定向包括重定向输入、重定向输出、错误重定向。
? 3、定义或赋值变量时,采用“变量名=变量值” 的格式。赋值操作还可以使用单引号、双引号、反撇号、read 命令等方式。
? 4、查看或引用变量的值时,采用“$变量名” 的格式。
? 5、常见的特殊变量包括环境变量、位置变量、预定义变量
标签:oca 覆盖 roo com tar 权限 减法 mic 提示信息
原文地址:https://blog.51cto.com/14557920/2456725