Shell
Shell学习笔记
哎呦,帅小伙哦
这个作者很懒,什么都没留下…
展开
-
Shell基础-awk脚本编程
一,awk简介 awk是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入、一个或多个文件,或其它命令的输出。 awk的处理文本和数据的方式是这样的,它逐行扫描文件,从第一行到最后一行,寻找匹配的特定模式的行,并在这些行上进行你想要的操作。二,awk的语法格式 **awk [options] 'commands' filenames** awk中使用最多的选项-F的含义是定义输入字段分隔符,默认的分隔符是空格或原创 2021-01-22 15:33:33 · 389 阅读 · 1 评论 -
Shell基础-流编辑器sed
sed是一种在线的、非交互式的编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”,接着用sed命令处理缓冲区的内容,处理完后,把缓冲区的内容送往屏幕。 需要注意的是,sed不管是否找到指定的模式,它的退出状态都是0,只有当命令存在语法错误时,sed的退出状态才是非0。 下面介绍sed的使用语法: sed [options] 'command' file(s) sed [options] -f scriptfile file(s) 注意'...原创 2021-01-19 20:49:12 · 143 阅读 · 0 评论 -
Shell基础-day8-正则表达式
正则表达式是一种字符模式,用于在查找过程中匹配指定的字符。在大多数程序里,正则表达式都被置于两个正斜杠之间。在正则表达式中**元字符**是很重要的概念。下面就行其含义的总结基本元字符^表示要匹配字符的开头$表示要匹配字符的结尾中括号表示其中任一个字符[a-z09]表示匹配a到z或是0或是9的一个字符[^]匹配不在指定组内的字符.表示任意单个字符\转义字符*表示前面字符出现0次或多次<词首定位符>词尾定位符(.)匹配稍后使用的字符标签,后面在想使用这部分内容的时候使用\数字原创 2021-01-12 17:29:49 · 201 阅读 · 0 评论 -
Shell基础-day7-函数(2)
1,位置参数的使用#!/bin/bash # $# 代表参数的个数# 提示用户使用该命令的正确格式if [ $# -ne 3 ];then echo "usage: `basename $0` par1 par2 par3" exitfi fun3(){ echo "$(($1 * $2 * $3))"} result=`fun3 $1 $2 $3`echo "re原创 2021-01-06 21:46:36 · 107 阅读 · 0 评论 -
Shell基础-day7-函数(1)
1,shell中定义函数的语法(注意在shell中不需要定义形参,需要先定义在调用)方法一(比较常用):函数名(){函数要实现的功能代码 }方法二:function 函数名{函数要实现的功能代码}2,shell中不需要参数的函数代码如下#!/bin/bashfaction(){ #下面的是局部变量,只能在函数内部使用 factorial=1 for((i=1; i <= 5; i++)) do factorial=$[ $factorial *原创 2021-01-05 22:28:33 · 144 阅读 · 0 评论 -
Shell基础-day6-数组
1,shell中的数组分为普通数组和关联数组 注意普通数组的下标是数字,而关联数组的下标可以是字符串。注意普通数组对应python中的列表,关联数组对应python中的字典。 如果想输出普通数组中的值“linux”可以直接执行命令echo ${books[0]},但是shell默认不支持关联数组,所以不能直接用命令echo ${info[age]} 来输出年龄,想要定义关联数组的话,需要使用命令进行声明declare -A info1,然后在定义info1=([name]an [...原创 2020-12-29 23:12:37 · 166 阅读 · 0 评论 -
使用Shell实现并发控制
思路就是创建一个管道,往里面写入固定行数的数据,当进程进行操作之前先读取一行,执行完操作写入一行。即可实现可控进程数的并发操作。注意这个思路和信号量的概念类似。#!/usr/bin/bash#ping02thread=8tmp_fifofile=/tmp/$$.fifomkfifo $tmp_fifofileexec 8<> $tmp_fifofilerm $tmp_fifofile#注意上面虽然删除文件了,但是文件描述符8还是在的for i in `seq $...原创 2020-10-28 20:56:07 · 417 阅读 · 0 评论 -
Shell基础-day5-循环语法
1,for循环 for 变量名 [ in 取值列表 ]do 循环体donefor循环默认是按照空格分隔变量值的,注意for循环的循环次数是固定的。for val in a b cdo echo $valdone 注意上面的脚本会输出a b c下面的例子实现的是for创建多个用户,需要创建一个文件,文件中每行的格式是:用户名 密码#!/usr/bin/bash#判断脚本是否有参数if [ $# -eq 0 ]; then ...原创 2020-10-20 21:41:26 · 410 阅读 · 0 评论 -
Shell命令杂项
1,> test.txt 重定向,执行这条命令会清空test.txt的内容。2,注意下面两条命令的不同for i in 'cat test.txt' ; do echo $i done 输出的结果是cat test.txtfor i in `cat test.txt` ; do echo $i done 假设test.txt中的内容是a b c,则输出的结果是a b c,``会告诉bash把这条命令的执行结果作为参数。3,任何命令执行的时候前面都可以加一个time...原创 2020-10-30 21:11:07 · 106 阅读 · 0 评论 -
Shell基础-day4-if和case条件判断
1,shell中分支语句的结构 if 条件测试1; then 命令序列elif 条件测试2; then 命令序列 elif 条件测试3; then 命令序列 else 命令序列 fi2,使用if安装apache#!/usr/bin/bash#install apache#v1.0 gateway=192.168.122.1ping -c1 www.baidu...原创 2020-10-19 11:56:49 · 167 阅读 · 0 评论 -
Shell基础-day3-条件测试
0,条件测试里面有3类:文件测试、数值比较、字符串比较1,test 条件表达式 注意,这个语法不会返回错误,只会返回相应的值,具体例子见下面的图片。test -d /home 判断目录/home是否存在,存在返真,不存在返回假。 下面脚本的含义是,如果目录/var/mysql_back不存在,则创建该目录。#!/usr/bin/bashback_dir=/var/mysql_backif ! test -d $back_dir; then mkdir -...原创 2020-10-15 21:32:55 · 166 阅读 · 0 评论 -
shell基础-day2
1,在bash中使用;,&&,||的区别。 ;不具有逻辑判断功能,不论前面的命令是否成功都会依次执行后面的命令,shell命令,如果一行中有不只一个就需要加;或&&或|| &&和||具有逻辑判断功能。使用&&连接,只有当前面的命令执行成功后面的命令才会执行。如果使用||连接,当前面的命令执行失败才会执行后面的命令。ping baidu.com && echo "is up" || echo "is down"...原创 2020-10-14 20:53:07 · 216 阅读 · 0 评论 -
Shell基础——day1
1,shell文件的后缀.sh2,在shell中每个命令的执行都会有一个返回值,执行成功值是0,不成功是非0。这个变量用?表示,可以使用$对值进行获取,比如:3,shell脚本的执行,可以使用bash 脚本名字.sh 或者使用 sh脚本名字.sh,也可以使用绝对路径或者相对路径执行,但是这个时候是需要权限的。4,shell脚本第一行以#!开头,术语叫shebang,目的是指定默认的解释器,当不人为指定的时候会使用这个解释器执行。5,shell是解释型语言,python有两种执行方式,一.原创 2020-09-28 21:51:03 · 172 阅读 · 0 评论 -
Shell能做什么
1,自动化批量系统初始化程序(update,软件安装,时区设置。。。)2,自动化批量软件部署(LAMP,LNMP,Tomcat。。。)3,管理应用程序4,日志的分析处理程序(输出网站的访问量)5,可以写自动化备份恢复程序(MySql完全备份/增量)6,自动化管理程序(批量远程修改密码,软件的升级,配置更新)7,自动化的信息采集及监控程序(收集系统/应用状态信息,CPU,Mem,Net等)8,配合Zabbix实现信息采集9,可以写一个shell脚本实现自动化扩容10,可以使原创 2020-09-28 20:28:42 · 4114 阅读 · 0 评论