
Shell脚本语言
文章平均质量分 74
运维开发与云计算学习者
这个作者很懒,什么都没留下…
展开
-
10.非交互式的文本编辑器sed
sed -i '/^a/s/$/***/' 1.txt #先找到以a开头的行,别的命令都是在几行,所以s前没体现定位符,然后再进行替换操作,把末尾改成***,这是在末尾直接加,要想改末尾的最后一个字符就是.$查并输出这个文本第1行,然后再输出第 1+2行,1+2+2,1+2+2+2,1+2+2+2+2 ....直至文本结束,也就是1 3 5 7行。sed -i '2s/old/new/' 2.txt #换第2行的第1个old,第一行可以写1s。原创 2024-09-29 17:23:52 · 902 阅读 · 1 评论 -
9.Shell中的正则定位符
有些软件是支持这个扩展正则符号的,因为基本正则的符号相对复杂一些,扩展正则是做了一些精简,以及功能上的扩展,基本上也是与grep vi sed awk联用,这四个工具都支持扩展正则。匹配前面字符0次或者1次,对于shell来说,o oo ooo 每一个单独的o都是满足要求的,所以它会都展示出来,而且就算没有o,它也会匹配,所以会把内容全显示。#虽然2是过滤出来的,但是起不到我想要不包含a1行的效果了,所以也体现出正则是匹配字符的,而不是匹配行的,显示出来这些行是因为grep。原创 2024-09-29 17:19:52 · 972 阅读 · 0 评论 -
8.操作Shell中变量的字符串截取、替换、删除
这里的##代表从左往右删除,删除变量a中的所有root及它前面的内容,必须写*,不然到:root它就识别不了了,它会认为:root是一个整体,而不是root,此时并不会改变变量a本身的值。#这里的#代表从左往右删除,删除第一个匹配项,删除的是a这个变量里的第一个root,此时并不会改变变量a本身的值。字符串删除(相当于一种运算,在原有变量的基础上获得新的结果,删除和替换为空是不一样的,不会改变原来的变量的值)#给这个变量定义一个初始值,假如这个变量里的值为空,则这次会输出123,有值则输出a原本的值。原创 2024-09-25 15:03:42 · 626 阅读 · 0 评论 -
7.Shell中的函数
mkdir $1 #注意这里的$1不是位置变量,而是调用这个函数abc时,搭配的第一个变量,如果这里写的是个字符,比如mkdir haha,那调用时就不需要再带个值了,直接就写abc即可。#写函数名就是调用这个函数,因为你函数里的命令需要搭配变量,所以这里调用函数还需要带着变量,可以用位置变量也可以是自定义变量,也可以是任意一个值或字符。函数一般都是在for里面或者if里面调用,调用就直接写函数名,需要变量就配合变量,不需要就只写函数名。定义公共语句块,脚本中反复调用,达到精简脚本的目的。原创 2024-09-25 14:58:14 · 191 阅读 · 0 评论 -
6.Shell中的循环for、while
for i in 1 2 3 4 #这个1、2、3、4也可以写成haha、xixi、tc,有几个值就循环几次,每次循环时都相当于赋予变量i本次循环的参数,这个i也可以不参与执行命令。case 变量 in #这里的变量可以是位置变量,也可以各种其他变量,和for还是有些区别,for可以指定次数,case通常与位置变量连用。wait #wait的作用是这个脚本里的所有命令都执行完并且关闭了,才退出这个循环,不加的话,命令一执行完这个脚本就结束了。原创 2024-09-25 14:28:58 · 308 阅读 · 0 评论 -
5.Shell中的判断if、case
执行命令2 #如果符合条件2执行这个命令,这个elif条件测试可以有多个,匹配上,就不执行下列判断了。exit 2 #还要定义这个错误输出的返回值,只有返回值是非0才是异常。执行命令1 #如果符合条件1执行这个命令,不执行下列判断了。执行命令1 #如果符合条件则执行这个,下面的不执行。if双分支处理,如果满足if的条件测试,则执行命令1,不满足执行命令2。执行命令2 #如果不符合条件则执行这个。原创 2024-09-25 14:21:38 · 174 阅读 · 0 评论 -
4.Shell中的条件测试
测试/etc存在是否为真。前面的命令执行后的状态是否为0,如果为0继续执行后面的命令:&&前面的命令执行后的状态是否非0,如果非0继续执行后面的命令:||如果多个&&和||相结合的话,只判断前面是否成功,比如。-z:字符串或者变量的值如果为空,则为真即$?-n:字符串或者变量的值如果存在,则为真。-x:文档存在,且有可执行权限为真。-r:文档存在,且有可读权限为真。-w:文档存在,且有可写权限为真。-d:文档存在,且是目录为真。-f:文档存在,且是文件为真。此时123 456都会输出。原创 2024-09-25 14:12:26 · 221 阅读 · 0 评论 -
3.Shell中常用的特殊字符
/opt是正确输出结果,/opt/123不存在,也就是错误输出,那么test文件里就只能看到 ls: cannot access /root/haha: No such file or directory 这个内容。#/opt是正确输出结果,/opt/123不存在,也就是错误输出,那么test文件里就只能看到/opt这一个内容。#1.txt脚本是正确的,/root/haha是错误输出,其输出的所有结果都会被写进/opt/haha中。#/opt是正确输出结果,/opt/123不存在,也就是错误输出。原创 2024-09-25 14:06:40 · 347 阅读 · 0 评论 -
2.Shell中的数值计算
因为对于expr来说 * 在shell中是通配符,得先取消通配符的含义,它才是乘法,''和\都能取消符号的特殊含义。#\是转译符号,只会屏蔽后面一个字符的特殊含义,以空格区分是否是一个字符,比如echo $a1 就会输出a1。$[1+1] #不会在屏幕中输出,可以结合echo 看出结果,也可以用$()引用计算结果。$[a-a] #也支持变量和变量的计算,变量的值得是数字。(2)使用$[]和$(()) 命令,不会将运算结果输出到屏幕,它俩是一样的。原创 2024-09-25 14:04:13 · 311 阅读 · 0 评论 -
1.Shell脚本语言中的变量
当我们写完一个脚本,可以直接放在这个变量定义的目录里,此时那1个脚本就不用写绝对路径去执行而是可以直接执行了,我们使用的命令都在这些目录里。echo $USER #这个当前环境中的用户,谁去执行的这个脚本,输出谁的用户名,因为有可能不是root用户,此时就体现作用了。系统定义好的变量,可以直接使用的变量,这些变量名都是大写字母的组合,全局变量的意义就在于所有的bash(所有的终端都能使用)为了让脚本增加灵活度,适应多变的环境,而使用变量,变量是一个容器,以不变的名称存放可以变化的值。原创 2024-09-25 14:00:41 · 885 阅读 · 0 评论