Shell脚本
Cecilia3333
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Shell脚本学习笔记——符号(4)
在初识Shell时,我们介绍过,Shell是一种弱类型语言。但是,Shell也是有变量类型的,但它的变量类型和C/C++的变量类型有点不一样。当我们运行Shell时,会同时存在三种变量:本地变量:局部变量在脚本或者命令中定义,仅在当前Shell实例中有效,其他Shell启动的程序不能访问局部变量。环境变量:所有的程序,包括Shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行...原创 2018-06-02 23:45:31 · 404 阅读 · 0 评论 -
Shell脚本学习笔记——sed
sed是一种流编辑器,它是文本处理中的工具,能够完美的配合正则表达式使用。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”,接着用sed命令处理缓冲器中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。sed主要用来自动编辑一个或多个文件,简化对文件的反复操作,编写转换程序等。sed默认按照Basic规范...原创 2018-06-21 22:23:28 · 313 阅读 · 0 评论 -
Shell脚本学习笔记——awk
sed以行为单位处理文件,awk比sed强的地方在于不仅能以行为单位,还能以列为单位处理文件。awk缺省的行分隔符是换行,缺省的列分隔符是连续的空格和Tab,但是行分隔符和列分隔符都可以自定义。awk的基本用法和sed类似,awk命令行的基本形式为:awk option 'script' file1 file2 ...awk option -f scriptfile file1 ...原创 2018-06-21 23:25:27 · 323 阅读 · 0 评论 -
Shell脚本学习笔记——find
Linux下find命令在目录结构中搜索文件,并执行指定的操作。原创 2018-06-22 17:43:26 · 596 阅读 · 0 评论 -
Shell脚本学习笔记——初识Shell
初识ShellShell是一种用C语言编写的程序,它是用户使用Linux的桥梁。Shell既是一种命令语言,又是一种程序设计语言。Shell是指一种应用程序,一种和内核沟通的外壳应用程序的统称。这个应用程序有时提供了一个界面,用户通过这个界面访问操作系统内核的服务。Shell脚本Shell脚本是一种为Shell编写的脚本程序。Shell和Shell script是两个不同的概念。Shell开发环...原创 2018-06-01 22:15:13 · 321 阅读 · 0 评论 -
Shell脚本学习笔记——符号(1)
在初步了解了Shell的基本概念和特点之后,我们接下来就开始正式的学习Shell语言。这里我们创建第一个Shell脚本文件,命名为myshell.sh。打开文件,在文件中写入如下内容,然后保存并退出。 #!/bin/bashecho "hello world"#!是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种Shell。在Shell脚本...原创 2018-06-01 22:47:13 · 768 阅读 · 0 评论 -
Shell脚本学习笔记——符号(2)
在Shell中,有一种奇怪的现象,当我们在myshell.sh中输入如下代码,保存并退出。pwdcd ..pwd运行代码,可以看到如下现象:脚本执行cd命令,发现回显消息当前所处的目录发生改变,但是实际上,真实目录并没有改变。其实这也很好理解,在上一篇博客中,我们提到了,执行的本质原理是Shell会fork一个子进程来解释脚本。但是,如果我们直接在命令行执行cd命令,就会发现,父bash的工...原创 2018-06-01 23:31:36 · 231 阅读 · 0 评论 -
Shell脚本学习笔记——位置参数和特殊变量
在Shell中,有很多变量是被自动赋值的,常用的位置参数和特殊变量总结起来有:$0:相当于C语言main函数中的argv[0],还有$1,$2 ...... ,这些称为位置参数,相当于C语言main函数中的argv[1],argv[2] ......$#:相当于C语言main函数中的 argc-1。注意这里的 # 后面不表示注释。$@:表示参数列表$1,$2 ...... 。$?:上一条命令的退出...原创 2018-06-08 23:25:45 · 412 阅读 · 0 评论 -
Shell脚本学习笔记——函数
和C语言类似,Shell中也有函数的概念,但是函数定义中没有返回值和参数列表。在定义MyFunc( )函数时并不执行函数体中的命令,就像定义变量一样,只是给MyFunc这个名字一个定义,到后面调用MyFunc函数时,才执行函数体中的命令。注意:Shell中的函数调用不写括号。Shell中的函数必须先定义后调用,一般把函数定义都写在脚本的前面,把函数调用和其它命令写在脚本的最后。函数传参Shell函...原创 2018-06-08 23:57:12 · 593 阅读 · 0 评论 -
Shell脚本学习笔记——Shell脚本的调试方法
Shell脚本本身,调试没有C/C++那么多的调试工具或者方式,一般我们常规的方法,Shell都支持,但主要通过一些调试选项来进行。-n:读一遍脚本中的命令但不执行,用于检查语法中的脚本错误。-v:一边执行脚本,一边将执行过的脚本命令打印到标准错误输出。-x:提供跟踪执行信息,将执行的每一条命令和结果依次打印出来。使用这些选项,一般有三种方法:一是在命令行使用。二是在脚本开头提供参数。三是在脚本中...原创 2018-06-09 00:21:13 · 343 阅读 · 0 评论 -
Shell脚本学习笔记——数组
Shell只支持一维数组,不支持多维数组,初始化时不需要定义数组大小。与大部分编程语言类似,Shell数组元素的下标从0开始。获取数组中的元素要利用下标,下标可以是整数或算术表达式,其值应该大于等于0。Shell数组用括号来表示,元素用“空格”符号分隔开,可以不使用连续的下标,而且下标的范围没有限制。下面我们来举一个具体的例子:获取数组中所有的元素修改特定下标元素的值获取数组的长度遍历数组方式一:...原创 2018-06-09 00:46:44 · 417 阅读 · 0 评论 -
Shell脚本学习笔记——文件
大多数Unix系统命令从你的终端原创 2018-06-09 10:38:59 · 308 阅读 · 0 评论 -
Shell脚本学习笔记——符号(3)
Shell变量shell是弱类型语言,原则上,不是特别强调shell变量,或者shell变量可以放很多常见内容,这点和传统的C/C++有很大不同。shell变量也不需要提前定义,或者不牵扯到定义一说,需要时直接使用即可。shell的赋值和命名规则myval="hello world"注意:变量名和等号之间不能有空格。如果变量名和等号之间出现了空格,就会被shell解释成命令和命令行参数。变量名的...原创 2018-06-02 21:23:51 · 266 阅读 · 0 评论 -
Shell脚本学习笔记——grep
grep是一款强大的文本过滤工具,按照关键字或者正则表达式进行行过滤。常见选项原创 2018-06-21 21:26:36 · 261 阅读 · 0 评论 -
Shell脚本学习笔记——xargs
xargs命令是给其他命令传递参数的一个过滤器,也是组合多个命令的一个工具,它擅长将标准输入数据转换成命令行参数。xargs能够处理管道或者stdin并将其转换成特定命令的命令参数。xargs也可以将单行或多行文本输入转换成其他格式。xargs的默认命令是echo,空格是默认定界符。常见选项(1)-n:指定列数,并多行输出。(2)-d:自定义一个域分隔符,将特定列打散,并指定格式输出。(3)-i:...原创 2018-06-21 21:17:21 · 369 阅读 · 0 评论 -
Shell脚本学习笔记——语法之条件测试(2)
在上一篇博客中,我们讲述了一些条件测试最基本的方法。但是,上篇博客的若干条件判断命令,只能判断出条件的真假,但在实际的应用中,判断出真假只是第一步,我们还要根据判断结果来进行语句分流。和C语言类似,在Shell中用if、then、elif、else、fi这几条命令实现分支控制。这种流程控制语句本质上也是由若干条Shell命令组成的。我们先来看一个例子:这段代码是判断标准输入是否为字符串“hello...原创 2018-06-05 01:29:39 · 308 阅读 · 0 评论 -
Shell脚本学习笔记——语法之循环语句
Shell脚本中的for循环结构和C语言很不一样,但有类似C语言的写法。for循环(( ))这种结构我们之前讲过,在该结构中,所有的运算都和C是一样的。当然,Shell也有它个性的循环方式,那就是for in循环。for in循环需要注意的一点是,for in循环中的{ }是前闭后闭区间。另外,for in 方式的独到之处就是可以用来遍历字符。还可以组合使用:还可以进行排列组合:总之一句话就是,f...原创 2018-06-05 02:06:34 · 400 阅读 · 0 评论 -
Shell脚本学习笔记——练习题(2)
利用Shell编写进度条传入至少三个数字参数到脚本,并计算出最大、最小、平均值。需要判断传入的数字是否足够,若不足够则输出警告信息。平均值保留两位小数。有一列数字如下:写出第100次出现的数字是多少这道题就是斐波那契数列的问题,我们的解题思路就是利用数组下标来解决问题。由于斐波那契增长极快,所以如果采用普通的(( )) 或者 let 的形式来计算,就会出现溢出的问题,得到错误的答案。所以在这里我们...原创 2018-06-11 23:53:09 · 471 阅读 · 0 评论 -
Shell脚本学习笔记——练习题
截止到目前,我们已经学习过了符号、变量、条件判断和循环。下面我们就列举几个基本的Shell脚本一起来练习一下吧!求1~100的整数求和for循环的实现:while循环的实现:until循环的实现:for in循环的实现:需要注意的是:在使用for、until、for in循环时,要对索引值进行自增操作。求1~100的整数和,打印出结果和算式for循环的实现:while循环的实现:until循环的实...原创 2018-06-05 11:12:03 · 530 阅读 · 2 评论 -
Shell脚本学习笔记——正则表达式概念、应用场景及基本要素
概念正则表达式又称规则表达式,是用于描述一组字符串特征的模式,用来匹配特定的字符串。通过特殊字符+普通字符来进行模式描述,从而达到文本匹配目的工具。正则表达式目前被集成到了各种文本编辑器/文本处理工具当中。应用场景验证:表单提交时,进行用户名密码验证。查找:从大量信息中快速提取指定内容。如:在一批URL中,查找指定URL。替换:将指定格式的文本,进行正则匹配查找,找到之后进行特定替换。如:vim文...原创 2018-06-12 20:19:16 · 375 阅读 · 0 评论 -
Shell脚本学习笔记——正则表达式
正则在线转换工具正则表达式基本是与语言无关的,只要学会正则表达式,那么基本上可以结合语言/工具与正则进行文本处理。我们这里统一与grep来进行验证。grep是一款Linux下按行匹配文本的工具。通常是Linux下处理文本的第一步,带有很多有用的选项。 -E:使用扩展正则匹配。 --color:将匹配到的内容进行语法高亮。字符类echo "hello world" | grep -E -...原创 2018-06-12 23:43:48 · 446 阅读 · 0 评论 -
Shell脚本学习笔记——基本正则与扩展正则
我们在前面测试grep工具时,其中有一个 -E 选项,那如果将这个 -E 去掉,会出现什么现象呢?原创 2018-06-13 10:36:44 · 1010 阅读 · 0 评论 -
Shell脚本学习笔记——其他常用通用字符集及其替换
有了这些符号,我们就可以简化正则表达式的编写了。试一试:echo "abc1239cd_@#" | grep -E --color '\d'echo "abc1239cd_@#" | grep --color '\d'这里我们要再引入一条命令——egrep。egrep也可以达到我们想要的效果:echo "abc1239cd_@#" | egrep --color '\d'...原创 2018-06-13 22:19:36 · 1109 阅读 · 0 评论 -
Shell脚本学习笔记——sort
原则sort将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将它们按升序输出。常见选项(1)sort默认的排序方式是升序,如果想改成降序,使用 -r 选项即可。(2)-u 选项,作用是在输出行中去除重复行。(3)-n 选项,指定使用按数值的方式来排序。(4)-t 和 -k 选项,可以设定间隔符。-t 指定间隔符,-k 指定域。这句话的意思就是,以 :...原创 2018-06-21 16:39:42 · 389 阅读 · 0 评论 -
Shell脚本学习笔记——uniq
uniq 的作用是相邻行去重。常见选项(1)-c 的作用是标识出重复行的重复次数。(2)-d 表示只显示重复行。(3)-u 表示只显示文件中不重复的各行。练习结合sort、uniq工具,求file1 和 file2 的交集、并集和补集。file1 和 file2 的内容如下:解题思路:将file1 和 file2 两个文件合并成一个文件进行操作。...原创 2018-06-21 17:12:37 · 308 阅读 · 0 评论 -
Shell脚本学习笔记——paste
paste单词的意思是粘贴。该命令主要用来将多个文件的内容合并。paste将按行把不同文件行信息放在一行。缺省情况下,paste连接时,用空格或者tab键分隔新行中不同文本。常用选项(1)-d 的作用是指定域分隔符。(2)-s 作用是将每个文件合并成行,而非按行粘贴。(3)- 是占位符,指定一行中放几个元素。...原创 2018-06-21 17:27:21 · 700 阅读 · 0 评论 -
Shell脚本学习笔记——cut
cut 命令从文件的每一行剪切字节、字符和字段,并将这些字节、字符和字段写至标准输出。cut 必须指定-b 、-c 或 -f 标志之一。常见选项(1)-b:以字节为单位进行分割。(2)-c:以字符为单位进行分割。单单这么看,-b 和 -c 好像没有什么区别。但是我们换成中文字符,差别就显现出来了。这是因为Linux默认用 utf8 进行编码,而以utf8的标准,一个中文字符占三个字节,清楚了这一点...原创 2018-06-21 19:57:34 · 490 阅读 · 0 评论 -
Shell脚本学习笔记——语法之条件测试(1)
测试命令Shell脚本中测试是用命令来完成的,常见的测试命令包含test 或 [ ,通过检查该类命令的退出码,决定条件测试是否成立。上面这段代码,就完成了一个对于输入值是否等于100的测试。其中,read相当于C语言中的scanf,用于获取输入值;-eq就是equal(等于)的意思,用来比较两个数字是否相等。$?表示上一条指令的退出码。从运行结果来看,当我们输入100时,退出码为0,...原创 2018-06-05 00:30:11 · 505 阅读 · 0 评论
分享