01 shell编程规范与变量
前言:
大家对shell脚本应该都不算陌生了,如果突然问你什么是shell脚本?是干什么用的?由什么组成以及怎么使用?变量的概念是什么?作用范围是什么?变量间的算术运算怎么表示?你能很容易答出来吗
本文整理自博主当年的学习笔记,若有疏漏欢迎指正!
Shell编程规范与变量
学习目标:
掌握shell脚本编程规范
掌握管道,重定向,变量
目录结构:
Shell脚本的概念
- 将要执行的命令按顺序保存到一个文本文件
- 给文件可执行权限,便可运行。
- 可以结合各种shell控制语句以便完成更复杂的操作
- 脚本文件一般以.sh结尾,执行脚本的命令是sh
Shell脚本应用场景
- 重复性操作
- 批量事物处理
- 自动化运维
- 服务运行状态监控
- 定时任务执行
- ……
Shell脚本的组成
1、 脚本声明 #!/bin/bash一般是这样的
2、 注释信息 以#开头注释脚本大概情况
3、 可执行语句 就是指正文,命令的叠加
编写shell脚本
[root@poll ~]# vi a.sh //编辑脚本文件,脚本文件一般都是以.sh结尾的
#!/bin/bash //声明这是·一个脚本
#This is my first shell-script //注释一般用来记录脚本的功能
#2018-03-16 //注释 记录脚本时间
cd /boot //切换到/boot目录下
echo "当前目录位于:" //显示双引号内的内容
pwd //显示当前目录
echo "其中以vml开头的文件包括:" //显示双引号内的内容
ls -lh vml* //执行命令
注意:有交互用read -p 没有用echo
Shell脚本的执行方式
1、 绝对路径
2、 相对路径
3、 sh脚本
4、 source脚本
shell脚本变量揭秘
变量概念与分类
变量的概念:
1、 变量用来存放系统或用户需要使用的特定参数或者值
2、 变量的的值可以根据用户设定或者系统环境的变化面相应变化
3、 在shell脚本中使用命令可以使脚本更加灵活,适应性更强
变量的分类:
自定义变量:由用户自己定义,修改和使用
环境变量:由系统维护,用于设定系统环境
位置变量:通过命令行给脚本程序传递参数
预定义变量:bash中内置的一种变量,不能直接修改
变量的定义与输出
定义一个新的变量
格式:变量名=变量值
变量名以字母或者下划线开头
区分大小写
赋值可使用引号
双引号:允许通过$符号引用其他变量值
单引号:禁止引用其他变量值,$视为普通字符
反撇号``或$():命令替换,提取命令的执行结果
输入输出
输入格式:read [-p “提示信息”] 变量名
输出格式:echo $变量名
变量作用范围
l ’默认情况下,新定义的变量只在当前shell环境中有效,因此称为局部变量
l 当进入子程序或新的子shell环境时,局部变量无法再使用
l 为了使用户定义的变量在所有的子shell环境中能够继续使用,减少重复设置工作,可以通过内部命令export将制定的变量导出为“全局变量”
格式1:export 变量名…
格式2:export 变量名=变量值 …
两种格式可以混合使用
变量的算术运算
l 变量的数值运算多用于脚本程序的过程控制
l 只能进行简单得整数运算,不支持小数运算
l 整数值得运算主要通过内部命令expr进行
l 格式
expr 变量1 运算符 变量2 [运算符 变量3]
l +:加法运算
l -:减法运算
l \* :乘法运算,注意不能仅使用“*”符号,否则将被当成文件通配符
l /:除法运算
l %:求模运算,又称为取余运算,用来计算数值相除后的余数
实例:
[root@poll ~]# x=35
[root@poll ~]# y=16
[root@poll ~]# expr $x + $y
51
[root@poll ~]# expr $x - $y
19
[root@poll ~]# expr $x \* $y
560
[root@poll ~]# expr $x / $y
2
[root@poll ~]# expr $x % $y
预定义变量
l 预定义变量是由bash程序预先定义好的一类特殊变量,用户只能使用预定义变量,而不能创建新的预定义变量,也不能直接为预定义变量赋值
l 预定义变量使用“$”符号和另一个符号组合表示
l $* $@
保存了脚本要处理的所有参数
l $0
保存了脚本的名称
l $?
保存着命令或者脚本运行状态码,上一条命令运行成功结果显示0
l $#
保存了脚本要处理的参数个数
位置变量
l 为了在使用shell脚本程序时,方便通过命令行为程序提供操作数,bash引入了位置变量的概念
l 位置变量有$0,$n,n为1~9之间的数字
l $0:第一个字段表示命令名或脚本程序名
l $1为脚本要处理的第一个参数,$2为第二个参数,……
l Shell脚本最多可以直接处理9个参数
环境变量
l 环境变量指的是出于运行需要而由Linux系统提前创建的一类变量,主要用于设置用户的工作环境
l 使用env命令可以查到当前工作环境下的环境变量
l PATH环境变量用于设置可执行程序的默认搜索路径
l 环境变量的全局配置文件为/etc/profile,每个用户还有自己的独立的配置文件~/.bash_prpfile
这是shell编程初步接触,后续发各种shell编程语句。下面有一个简单的脚本样例
------一个小计算器-----
#!/bin/bash
#this
read -p "请输入第一个整数:" ONE
read -p "请输入第二个整数:" TWO
read -p "请输入运算符:" TH
echo "$ONE$TH$TWO=$(($ONE $TH $TWO))"
01 shell编程规范与变量的更多相关文章
- SHELL编程规范与变量
shell相比标准开发语言比如JAVA,C,C++来说还是比较简单的,其实就是一堆命令的集合而已,初学者从简单的shell脚本学起,至于shell编程还是要有编程思想在里面,因此,循序渐进很重要,先研 ...
- Shell脚本之编程规范和变量
Shell脚本编程规划和变量 1.Shell脚本概述 2.Shell编程规划 3.重定向与管道 4.Shell脚本变量 1.Shell脚本概述 Shell的作用:充当"翻译官"的角 ...
- shell编程下 特殊变量、test / [ ]判断、循环、脚本排错
第1章 shell中的特殊变量 1.1 $# $# 表示参数的个数 1.1.1 [示例]脚本内容 [root@znix ~]# cat /server/scripts/show2.sh #!/bin/ ...
- 【转】shell编程下 特殊变量、test / [ ]判断、循环、脚本排错
[转]shell编程下 特殊变量.test / [ ]判断.循环.脚本排错 第1章 shell中的特殊变量 1.1 $# $# 表示参数的个数 1.1.1 [示例]脚本内容 [root@znix ~] ...
- Linux学习——shell编程之环境变量配置文件
小白学习,在学习中总结! shell编程之环境变量配置文件 一:环境变量配置文件 1 shell编程之环境变量配置 变量类型: 用户自定义变量(本地变量) 环境变量 :定义每个用户的操作环境,如pat ...
- Shell 编程基础之变量和环境变量
一.变量赋值和引用 Shell 编程中,使用变量无需事先声明,同时变量的命名不惜遵循如下规则: 首个字符必须为字母(a-z,A-Z)或者_ 变量名中间不能有空格,可以使用_连接 不能使用其他表达符号 ...
- shell编程之环境变量
在shell编程里我们首先接触到的是环境变量,常用命令说明 1. 使用echo命令查看单个环境变量.例如: echo $PATH 2. 使用env查看所有环境变量.例如: env 3. 使用set查看 ...
- shell编程规范:引用
Shell代码规范 作 者: 毕小朋 用 途: 规范Shell代码书写,方便查看与修改 博 客: http://blog.csdn.net/wirelessqa 参 考: http://www.ohl ...
- linux系列之-—01 shell编程笔记
一.特殊变量($0.$1.$2. $?. $# .$@. $*) shell编程中有一些特殊的变量可以使用.这些变量在脚本中可以作为全局变量来使用. 名称 说明 $0 脚本名称 $1-9 脚本执行时的 ...
随机推荐
- 从零开始的全栈工程师——jQuery
jQueryjq是js一个高效且精简的库( 用的多写得少 ) ,是chrome出版的.jq内部有一个$的方法,他是jq的起始符或标识符,这个方法是用于获取元素. 下载库或者框架的方法官网 produc ...
- html5格式样式
<b> 加粗 <b style="font-size: 100px;">大字体</b>
- 避免console错误,console兼容
背景:写js代码时写了很多console.log进行日志打印,最后上生产时不想删除日志输出, 但是ie在不打开控制台时,日志输出会导致后续js不执行,所以需要适时屏蔽js日志输出 (IE等不支持con ...
- xml linq
这里讲解一下linq对xml的基本操作,包括: 新建xml.新建节点 查询节点 插入属性.插入节点 替换节点 在这里我封装了一些常用的方法: public class XmlHelper { /// ...
- 通过 Powershell 来替换 ARM 模式下虚拟机的网络接口
需求描述 客户在部署完 ARM 模式的虚拟机以后,由于误操作在虚拟机内部禁用了网卡导致远程访问虚拟机受到限制,以下是通过 Powershell 命令来替换原有虚拟网络接口实现虚拟网卡重置功能. Not ...
- npm run dev运行Vue项目报错:Node Sass does not yet support your current environment
导入Vue项目后,#npm run dev 报错: error in ./src/pages/hello.vue Module build failed: Error: Node Sass does ...
- Windows远程桌面,出现身份验证错误,要求的函数不正确
升级windows10 1803后,mstsc远程桌面出现 mstsc 远程桌面要求的函数不受支持,这可能是由于 CredSSP 加密 Oracle 修正.如图所示: 运行(win+r) gpedit ...
- 【Spring开发】—— AOP之方法级拦截
前言: 前面介绍了Spring的核心模块以及相关的依赖注入等概念.这篇讲解一下spring的另一个重点,AOP面向切面编程. 说道AOP不得不提到几个概念: 切面:也就是我们自己的一些业务方法. 通知 ...
- June 04th 2017 Week 23rd Sunday
It is not the mountain we conquer but outselves. 我们要征服的不是高山,而是我们自己. After days of hard working, I sl ...
- 简单使用Idea创建三层架构项目和数据库连接(使用原生ajax进行访问+ajax)
Idea创建三层架构项目 首先创建一个Web项目model 创建Web完成后进行创建entity.dao.service 特别注意 根据上面的步骤进行创建即可得到 创建完成 我们首先创建数据库 cre ...