SHELL脚本基础

基本都是干货,都是通过书和视频总结的一小部分,里面应该有一些错误;

SHELL变量

1.变量:临时储存数据的,该数据是可以进行变化的数据
2.变量的使用:1.多次重复使用的数据,并且在代码中重复,可以用变量来代替该内容
3.没有数据类型
4.变量名=变量值
5.如果打印变量和使用变量使用(&name)
6.unset 变量名 可以取消相应的变量

变量的定义规则:
1.变量名区分大小写
2.变量名中不能使用特殊的符号
3.变量名不能以数字开始
4.等号两边不能有任何空格
5.变量名尽量做到名如其人
6.变量名今年可能大写

echo ${A:2:4} 从0开始计数,从第二开始截取4个字符
命令的的执行结果作为赋值使用
date= $(date + %F)

交互式定义变量(read)
read [选项] 变量名
-p 提示用户的信息
-n 提示定义字符数
-s 不显示
-t 定义时长

read 也可以从其他文件读取做为变量使用

有类型的变量赋值
declare 选项 变量名=变量值 经declare修饰过后变量就只有一个 类型相关
-i 整数
-r 定义只读变量
-a 定义普通数组
-A 定义关联数组
-x 将环境通过环境导出

ps -auxf | grep bash (查看bash的父子关系)
export和declare -x 都可以导出环境变量 和定义环境变量

变量的分类 (作用域区分)
本地变量 当前用户定义的变量
环境变量 当前进程有效,并且子进程可以使用
env 查看当前用户的环境变量
set 可以查看所有的当前设置好的变量
全局变量
/.bashrc 当前用户的bash信息,用户登录时读取
/.bash_profile 当前用户的环境变量,用户登录时读取
/etc/bashrc 全局的bash信息,所有用户都生效
/etc/profile 全局环境变量信息 系统和所有用户都生效

以上文件修改以后,都需要重新source让其生效或者退出重新登录

系统变量
(内置bash 变量)shell 本省已经固定好了他的名字和作用
$? 状态值返回后的变量 非0 是有问题的
每次要验证命令的返回值
$0 当前执行的程序或者脚本的名字
$# 脚本后面接的参数的个数
$* 脚本后面的所有参数,参数当成一个整体输出
$@ 脚本后面所有参数,参数独立输出
$1-$9 脚本后面的位置参数,$1表示第一个位置 参数,以此类推
10−{10}-10−{n} 拓展位置参数
$$当前所在进程的进程号,
!后台运行的最后一个进程号!!后台运行的最后一个进程号 !!后台运行的最后一个进程号!调运最后一条命令中的参数

shell脚本写法规范

标准的shell脚本写法
source 用来重新读取配置文件并执行
#!/bin/bash //解释器

#Name:名字
#Desc : 描述
#Path:存放路径
#Usage:用法
#Update:更新时间

脚本的执行方法有两种
标准:1.绝对路径进行执行
2.相对路径执行
非标准:1.指定解释器编译
2.source 方式去执行脚本
也可以指定解释器对脚本进行翻译

bash -x 可以对脚本的查看脚本是否出现错误

shell的作用

1.自动化软件的部署 LAMP/LNMP/Tomcat
2.自动化管理 系统初始化脚本,批量
3.自动化分析处理
4.自动化备份
5.自动化监控

bash的一般特性

  1. 命令和文件的自动补全
    Tab 只能补全命令和文件
    2.常见的快捷键
    ctrl c 终止前台的运行程序
    ^z 挂起前台的程序挂起到后台
    ^d 退出 等价exit
    ^r 搜素历史命令
    ^u 删除光标前的所有字符
    ^k 删除光标后的所有字符
    3.常用的通配符(重点)
  • 匹配0或多个任意字符
    ?匹配任意单个字符
    [list] 匹配[list]中得任意单个字符
    [!list] 匹配除list中的任意单个字符
    {str1,str2,str3……} 多个字符
  1. shell中的引号(重点)
    “” 会把引号的内容当成整体来看待,允许通过符号引用其他的变量′会把引号的内容当成一个整体来看待,禁止引用其他变量值′′和符号引用其他的变量 ' 会把引号的内容当成一个整体来看待,禁止引用其他变量值 '' 和符号引用其他的变量′会把引号的内容当成一个整体来看待,禁止引用其他变量值′′和()一样 ,引号或者括号里的命令会优先执行,如果存在嵌套,反撇号不能使用

常用文本处理工具(推荐自学正则表达式:《正则表达式必知必会》)

grep 行过滤工具;用关键字进行行过滤
#grep 【选项】‘关键字’ 文件名
临时建立别名 alias 命令
建立别名 alias 命令='组合命令’

grep 常用的选项
-i 不缺分到大小写
-v 反选
-c 统计使用的次数
-r 递归查找
-l 查找文件名
-n 显示所在的行号
-e 使用正则表达式
-w 之搜寻 单词
^行头 KaTeX parse error: Expected group after '^' at position 5: 行尾 (^̲)(代表的是空格)
cut 列过滤使用
#cut [选项] 文件名称
-c 以自负单位进行切割,截取
-d 自定义分割符
-f 和-d 配合使用,指定截取区域
系统的运行级别(补充)
runlevel 0-7
init 0 -7 可以切换系统不同的级别

sort 排序
sort每一行进行排序将字符排序的时候根据的字符的AC码进行排序
-n 排序
-o 将输出结果经行重定向
-t 自定义分隔符
-k 定义排序的第几列

unip工具
unip用于去除连续的重复行

-i 忽略大小写
-c 统计重复行
-d 只显示重复行

tee 工具
tee工具 从标准输入读取并读取写入到标准输出和文件,即是双向覆盖重定向(屏幕输出|文本输入)
'^$'是空行

diff 工具(一般使用diff 打补丁和软件更新使用)(公司电脑有更具体的使用)
#diff [ 选项] 文件1 文件2

可以使用 > 文件名 用来清空文件的内容,但是并不会删除文件

tr工具 (跟新配置文件使用)
用于字符转换,替换和删除;主要用于删除文件中的控制字符或进行字符转换
用法1: 命令的执行结果交给tr处理,其中string1用于查询,string2用于转换处理
command | tr ‘strings’ ‘string2’
用法2:tr处理的内容来自文件,记住使用标准输入

tr ‘string1’ ‘string2’ < filename

用法3:匹配string1进行相应的操作,如删除操作

tr options ‘string1’ < filename

常用的options选项
-d 删除字符串1中所有的输入字符
-s 删除所有的重复出现字符序列,只保留第一个;即使出现字符串压缩为一个字符
a-z 匹配所有的小写字母
A-Z 取反
0-9 匹配数字
[:alnum:] 匹配所有的字母和数字
[:alpha:]: 匹配所有的字母s
[:blank:]: 匹配所有的空格
[:punct:]:匹配所有的标点符号
[:space:]:匹配说所有的水平和垂直的空格
[:cntrl:]:匹配所有的控制字符 (\f Ctral -l 走换行页)
\n \r \t

paste用于进行文件合并(使用的不是很多)

SHELL脚本 基础一相关推荐

  1. Linux shell脚本基础学习

    Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提. 1. Li ...

  2. Shell 脚本基础学习 (四)

    现在我们来讨论编写一个脚本的一般步骤.任何优秀的脚本都应该具有帮助和输入参数.并且写一个伪脚本(framework.sh),该脚本包含了大多数脚本都需要的框架结构,是一个非常不错的主意.这时候,在写一 ...

  3. Linux shell脚本基础学习详细介绍(完整版)一

    Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提. 1. Li ...

  4. Linux shell脚本基础学习详细介绍(完整版)2

    详细介绍Linux shell脚本基础学习(五) Linux shell脚本基础前面我们在介绍Linux shell脚本的控制流程时,还有一部分内容没讲就是有关here document的内容这里继续 ...

  5. Linux shell脚本基础学习详细介绍(完整版)

    Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提. 1. Li ...

  6. linux脚本变量运算符,linux——Shell 脚本基础篇(变量类型,变量操作,定义,运算与逻辑关系)...

    Shell 脚本基础 1.变量 什么是变量 #a=1 # echo $a 1 变量:可以变化的量 1.2变量名称注意事项 变量名不能以数字开头 不能与系统中已有的环境变量重名,尽量不要全部使用大写,尽 ...

  7. shell脚本基础 (一)

    shell脚本基础 (一) 如何编写shell脚本: shell脚本存放的路径举例:vi /root/first.sh 1.理清任务: 2.申明shell环境: 3.注释: 4.写粗糙的脚本: 5.完 ...

  8. 详细介绍Linux shell脚本基础学习(一)

    2019独角兽企业重金招聘Python工程师标准>>> Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础 ...

  9. linux 脚本编写 -eq,关于shell脚本基础编程第四篇

    shell脚本基础编程第四篇 本章主要内容:函数 函数 function: function 名称 { 命令 ; } 或 name () { 命令 ; } 定义 shell 函数. 创建一个以 NAM ...

最新文章

  1. 华科计算机学院多难考,计算机学院2019年硕士研究生入学考试成绩公告
  2. tf.reduce_max用法
  3. 你心动了吗?2014年iOS应用开发者收入超好莱坞美国票房
  4. 项目优化之:GPU编程
  5. 如何快速正确的安装 Ruby, Rails 运行环境
  6. 2020中国数字化转型优秀案例征集
  7. 怎样让百度快速收录的新方法
  8. java带参数的构造方法_java练习本(20190603)
  9. php生成成语,洪恩在线成语词典小偷程序php版_PHP教程
  10. 2016 server win 假死_win10程序假死无响应的两种解决办法
  11. 无法启动程序因为计算机中丢失msvcr100,win7系统无法启动程序提示计算机中丢失msvcr100.dll的解决方法...
  12. 香港服务器防攻击能力好吗
  13. 信息系统项目管理师2019年上半年上午试题解析(三)
  14. 胡乱捣鼓03——PID定身12cm直线追踪小车做起来~
  15. SVM分类,一对多;
  16. VMware workstation批量创建虚拟机和自动化安装操作系统(二)
  17. Texworks中文论文编辑排版优秀
  18. Android中绘图板的实现
  19. EDR汽车事件记录系统
  20. NBA名人堂之-威尔特·张伯伦|乔治·迈肯|比尔·沃顿|戴夫·考恩斯|威利斯·里德

热门文章

  1. Struts2 格式化输出时间
  2. 《网站设计 开发 维护 推广 从入门到精通》—— 2.3 页面设计创意思维
  3. C++ QT中的QSound使用方法
  4. Windows 不能在 本地计算机 启动 SQL Server 。错误代码126.
  5. 制造业采购审批流程设计示例
  6. python中module用法_Python学习之module用法
  7. java选择哪款eclipse_写java程序用哪一个版的eclipse比较好
  8. cadence高速电路设计 光盘_嘉定区高速复印机租赁费用
  9. 查单个值用什么resultset_视光门诊日记—为什么两个医院查的视力不一样
  10. 请编写出一个html页面 令其输出,javaweb程序设计案例教程_课后习题1.pdf