高淳网站建设,工程规范查询网,郯城建设银行网站,开发助手appShell的学习目标Shell的基本语法结构#xff1a; 如#xff1a;变量的定义、条件判断、循环语句(for、until、while)、分支语句、函数和数组等。基本正则表达式的应用文件处理#xff1a;grep、sed、awk工具的使用使用shell脚本完成复杂的任务#xff1a;服务搭建、批量处理…Shell的学习目标Shell的基本语法结构 如变量的定义、条件判断、循环语句(for、until、while)、分支语句、函数和数组等。基本正则表达式的应用文件处理grep、sed、awk工具的使用使用shell脚本完成复杂的任务服务搭建、批量处理。今日目标掌握Shell变量的定义和获取Shell简单的四则运算一、编程语言概述计算机只能识别机器语言(也就是二进制(0和1))。但是又不能直接使用0和1必须借助人(工具)来进行翻译成机器语言。而人(工具)就是常说的编译器或者是解释器 。编程语言的分类编译型语言 程序在执行之前需要一个编译过程把程序编译为机器语言文件运行时不需要重新翻译直接使用编译的结果即可。程序执行效率高以来编译器跨平台性差如C、C。解释型语言 程序不需要编译程序在运行时由解释器翻译成机器语言每次执行一次都要翻译一次。效率比较低。如Python/Javascript/Perl/Ruby/Shell等这些都是解释型语言。总结编译型语言比解释型速度较快但是不如解释型语言跨平台性好。如果做底层开发或者是大型应用程序或者操作系统一般都用编译型语言。如果是一些服务器脚本及一些辅助的接口对速度要要求不高。对于各个平台的兼容性问题的话一般则是解释型语言。二、Shell概述Shell介于用户和内核之间负责命令的解释。总结 shell是人机交互的媒介。shell的种类[solerholocalhost ~]$ cat /etc/shells/bin/sh # 是bash的一个快捷方式/bin/bash # bash是大多数Linux默认的Shell包含的功能几乎涵盖了shell的所有功能。/usr/bin/sh/usr/bin/bash1、什么是Shell脚本需要执行的命令保存到文本中按照顺序执行。解释型的语言所以不需要编译。可以使用公式来描述若干命令 脚本基本格式 脚本特定语法 思想 Shell脚本2、Shell脚本的用途自动化软件部署LAMP/LNMP/Tomcat自动化管理系统初始化脚本、批量更改主机密码、推送公钥等。自动化分析处理统计网站访问量自动化备份数据库备份、日志转储。自动化监控脚本3、Shell脚本的基本写法3.1 脚本的第一行字符#!指定解释器【必写】#!/bin/bash 表示以下内容使用bash解释器解析。注意点 如果直接将解释器路径固定在脚本里可能有些系统会存在找不到解释器的兼容性问题所以可以使用 #!/bin/env 解释器进行解析。3.2 脚本的第二部分注释(#)号说明对脚本的基本信息进行描述。 例如#!/bin/env bash# Name:Soler HO# Desc:description# path:存放路径# 下面是脚本的具体内容commands…...3.3 脚本的第三部分脚本要实现的具体代码内容。4、Shell脚本的执行方式4.1 切换到shell脚本所在的目录(此时叫做工作目录)执行shell脚本4.2 以绝对路径的方式去执行bash shell脚本4.3 直接使用bash 或sh 来执行bash shell脚本4.4 在当前的shell环境中执行bash shell脚本三、变量的定义1、什么是变量可以变化的数据是用来临时保存数据的。2、变量的定义格式变量名变量值变量名用来临时保存数据。变量值临时可变化的数据。例如A hello shellecho $A #调用变量必须使用$符号echo ${A}$A和${A}的区别相同点都是可以调用变量不同点${变量名}可以截取变量的某一部分而$变量名 不可以。3、变量的定义规则变量名区分大小写变量名不能有特殊符号如果是有空格的字符串给变量赋值时需要使用引号。变量名不能以数字开头。注意点不能以数字开头不代表不能包含数字。等号的两边不能有任何空格。变量名尽量做到见其名知其意。一般来说变量名使用大小写均可。4、交互式定义变量read目的让用户自己给变量赋值比较灵活。语法read [选项] 变量名常见的选项选项释义-p定义提示用户的信息-n定义字符数(限制变量值的长度)-s不显示(不显示用户输入的内容)-t定义超时时间默认单位为秒(限制用户输入变量值的时间)例子变量值来自文件的例子5、定义有类型的变量(declare)目的给变量做一些限制固定变量的类型。例如整型只读等。用法declare 选项 变量名变量值常用的选项选项释义例子-i将变量设置成整数declare -I A23-r定义只读变量declare -r Bshell01-a定义普通数组查看普通数组-A定义关联数组查看关联数组-x将变量通过环境导出declare -x AA1234 等于 export AA1234四、变量的分类1、本地变量当前用户自定义的变量当前进程中有效其他的进程及当前进程的子进程无效。2、环境变量当前进程有效且可以呗子进程调用。env — —— 查看当前用户的环境变量set ——— 查询当前用户的所有变量(临时变量与环境变量)export 变量名变量值 或者是 变量名变量值;export 变量名3、全局变量所有的用户和程序都能调用且继承、新建的用户也默认能调用。 相关配置文件的介绍文件名说明备注$HOME/.bashrc当前用户的bash信息用户登陆时读取定义别名、umaks、函数等$HOME/.bash_profile当前用户的环境变量用户登陆时读取$HOME/.bash_logout当前用户退出当前shell时最后读取定义用户退出时执行的程序$/etc/bashrc全局的bash信息所有用户都有效。$/etc/profile全局环境变量信息系统和用户都生效。注意点以上的文件修改后都需要重新source让其生效或者是退出重新登录。用户登陆系统读取相关文件的顺序* /etc/profile* $HOME/.bash_profile* $HOME/.bashrc* /etc/.bashrc* /etc/.bash_logout4、系统变量 系统变量(内置bash中变量)shell已经固定好自身的名字和作用。内置系统变量含义$?上一条命令执行后返回的状态状态值为0表示执行正常。非0表示执行异常或错误。$0当前执行的程序或脚本名$#脚本后面接的是参数的个数$*脚本后面所有的参数参数当成一个整体输出每一个变量参数之间用空格隔开。$脚本后面所有的参数参数是独立也是全部输出。$1-$9脚本后面的位置参数$1表示第一个位置参数。${10}-${n}位置参数的扩展第10个位置变量起必须扩起来(两位数字起就扩起来。$$当前所在进程的进程号如echo $$$!后台运行的最后一个进程号(当前终端)。!$调用最后一条命令历史中的参数实践操作五、四则运算算术运算默认情况下shell就只能支持简单的整数运算。运算内容加()、减(-)、乘(*)、除(/)、求模(余数)(%)。1、四则运算符号表达式实例$(())echo $((11))$[]echo $[10-5]exprexpr 10/5 注意点乘法时要使用转义符(\)即expr 10*5letn1;let n1 等价于 let nn1实例练习2、i和i表达式对变量的影响对表达式的影响i无先赋值再运算i无先运算再赋值实例练习文章如有错误请大家给予多多指教非常感谢95年金牛座的程序员 感谢你的关注公众号平头哥Geek