202206-29 Shell脚本中$符号的几种用法小结 目录Shell脚本中$符号的几种用法1.1引用变量1.2引用脚本或函数参数1.3上条命令的返回值1.4执行并获取命令输出1.5表达式求值1.6获取当前进程ID1.7后台运行的最后一个进程ID1.8获取Shell选项shell中$(())、$()、``与${}的区别(1)$()与``(反引号):返回括号中命令的结果(2)${}变量替换最近在学习Shell,发现还有一些知识点需要巩固,这里写出来,加深下印象。通常情况下,在工作中用的最多的有如下几项:... 继续阅读 >
202112-10 shell脚本读取命令行参数的实现 目录前提选项与参数:一.手工处理方式(已验证)二.getopts/getopt三.总结前提在编写shell程序时经常需要处理命令行参数选项与参数:如下命令行:./test.sh-fconfig.conf-v--prefix=/home-f为选项,它需要一个参数,即config.conf,-v也是一个选项,但它不需要参数。--prefix我们称之为一个长选项,即选项本身多于一个字符,它也需要一个参数,用等号连接,当然等号不是必须的,/home可以直接写在--prefix后面,即--prefix/home... 继续阅读 >
202111-19 Shell调用curl实现IP归属地查询的脚本 可用于shell环境进行IP归属地查询#!/bin/bash#传入IP参数IP=$1#使用百度开放地址库url="http://opendata.baidu.com/api.php?query=${IP}&co=&resource_id=6006&t=1412300361645&ie=utf8&oe=gbk&cb=op_aladdin_callback&format=json&tn=baidu&cb=jQuery1102026811896078288555_1412299994977&_=1412299994981"path=`curl-s$url|iconv-fgb2312-tutf-8|awk-F:'{print$6}'|awk-F[\"]'{print$2}'`echo"${IP}#${pat... 继续阅读 >
202111-19 Linux shell select菜单选择实现代码 假设需要在shell下实现一个菜单,估计会使用循环和read实现交互,在学习中发现一个select可在shell下很方便的实现这种交互菜单1.select语法selectvarin...do#yourcodedone2.示例#!/bin/bashecho"whatisyourfavoritecolor:"selectcolorin"red""blue""green""white""black"doecho"youchooseis$color"breakdoneBashShell中的select命令简单使用示例前言今天刚好写了一个自动化打包脚本,再... 继续阅读 >
202111-16 工作中使用Shell实用脚本 目录1.内存监控脚本2.检测网卡流量,并按规定格式记录在日志中3.监测Nginx访问日志502情况,并做相应动作4.扫描主机端口状态5.检测两台服务器某个目录下的文件一致性6.定时清空文件内容,定时记录文件大小7.查看局域网内主机是否存活8.自动应答分发免密登录9.代码上线脚本10.检测MySQL主从复制是否异常11.MySQL数据库备份脚本(mysqldump)1.内存监控脚本#!/bin/bash#memoryusemem_war_file=/tmp/mem_war.txtmem_use=`f... 继续阅读 >
202111-16 Shell中正则表达式及sed和awk常见问题 目录1正则表达式中的+、?、*分别表示什么含义?2如何编写正则表达式匹配11位的手机号?3简述sed定址符的作用及表示方式。4如何使用sed提取文本中的偶数行?5如何使用sed删除文本中每行的第4个字符?6提取/etc/passwd文件的第6-10行,另存为pass5.txt文件。7简述awk工具的基本语法格式。8简述awk工具常用的内置变量、各自的作用。9awk处理文本时,读文件前、读取文件内容中、读文件后后这三个环节是如何表示的?10提取当... 继续阅读 >
202110-20 Shell编程中Shift的用法小结 位置参数可以用shift命令左移。比如shift3表示原来的$4现在变成$1,原来的$5现在变成$2等等,原来的$1、$2、$3丢弃,$0不移动。不带参数的shift命令相当于shift1。非常有用的Unix命令:shift。我们知道,对于位置变量或命令行参数,其个数必须是确定的,或者当Shell程序不知道其个数时,可以把所有参数一起赋值给变量$*。若用户要求Shell在不知道位置变量个数的情况下,还能逐个的把参数一一处理,也就是在$1后为$2,在$... 继续阅读 >
202107-17 如何使用shell在多服务器上批量操作 目录SSH协议SSH建连过程ssh工具ssh公钥登陆批量操作多服务器文件合并scpnc小结SSH协议说公钥登陆之前,先来说一下SSH协议。SSH是一种网络协议,我们常说的ssh一般指其实现,即OpenSSH,在shell中,也就是ssh命令。SSHSecureShell(安全外壳协议,简称SSH)是一种加密的网络传输协议,可在不安全的网络中为网络服务提供安全的传输环境。SSH通过在网络中建立安全隧道来实现SSH客户端与服务器之间的连接。SSH的原理跟... 继续阅读 >
202107-04 如何利用 tee 命令调试shell脚本中的管道 目录实例执行脚本问题原因验证总结实例下面是一个简单的脚本,脚本中processid函数的作用是查询指定进程名字的进程ID,在管理linux服务器的过程中,这个是很常见的功能,processid函数作用是利用多层管道命令查询进程ID,以下是测试脚本源码#!/bin/shprocessid(){ipid=$(ps-ef|grep-w$1|grep-vgrep|awk'{print$2}')echo$ipid}case"$1"ini)processid$2;;*)echo"paramete... 继续阅读 >
202107-04 如何解决 shell 脚本重复执行的问题 目录简介实例1实例2总结简介flock是文件锁命令,它可以保证Linux系统上进程之间安全的访问临界资源,在shell脚本中,可以用来控制逻辑的互斥性实例1现有脚本a.sh,内容如下#!/bin/bashecho"[`date+'%Y-%m-%d%H:%M:%S'`]beginpid:$$..."sleep10echo"[`date+'%Y-%m-%d%H:%M:%S'`]endpid:$$..."在终端(记为终端1)中执行flock-xn./f.lock-c./a.sh命令,结果如下[tt@ecs-centos-7lock_test]$flock-xn./f.lock-c... 继续阅读 >
202107-01 shell 脚本中常用的内置变量(Bash 内置变量) 目录$FUNCNAME、$LINENO、$PWD$$、$PPID$0,$1,$2...$n、$#$*、$@$?$IFS$HOSTTYPE、$MACTYPE、$OSTYPE小结$FUNCNAME、$LINENO、$PWDFUNCNAME和LINENO变量经常用于脚本的调试FUNCNAME表示当前函数的名字,作用范围仅限函数中使用,在函数外无值LINENO表示当前所在脚本中变量出现在的行号PWD表示当前目录,对应于pwd命令现有个脚本a.sh内容如下#!/bin/bashtesta(){echo'func='$FUNCNAME,$LINENO}testaec... 继续阅读 >
202106-05 Shell编程之变量的高级用法详解 变量替换语法说明${变量名#匹配规则}从变量开头进行规则匹配,将符合最短的数据删除${变量名##匹配规则}从变量开头进行规则匹配,将符合最长的数据删除${变量名%匹配规则}从变量尾部进行规则匹配,将符合最短的数据删除${变量名%%匹... 继续阅读 >
202105-23 MySQL Shell的介绍以及安装 01ReplicaSet的架构 前面的文章中,我们说了ReplicaSet的基本概念和限制以及部署前的基本知识。今天我们来看InnoDBReplicaSet部署过程中的两个重要组件之一的MySQLShell,为了更好的理解MySQLShell,画了一张图,如下: 通过上面的图,不难看出,MySQLShell是运维人员管理底层MySQL节点的入口,也就是DBA执行管理命令的地方,而MySQLRouter是应用程序连接的入口,它的存在,让底层的架构对应用程序... 继续阅读 >
202103-09 Shell中的数学运算使用 在LinuxShell中进行数学运算,通常可以使用的运算符有:简单运算:let[](())高级运算:exprbc1、let命令let命令是bash内置命令,可以实现简单的算术以及逻辑运算,通过helplet命令,可以查询到let命令的具体使用方法。使用方法:#!/bin/shi=10echo$ileti=i+10#20echo$ilet"i=i+100"#120echo$i2、[][]相当于let命令,其用法如下:#!/bin/shi=10echo$ii=$[i+10]#20echo$ii=$[i+100]#120echo$i3、(())(())等... 继续阅读 >
202103-09 Shell expr命令进行整数计算的实现 expr是evaluateexpressions的缩写,译为“表达式求值”。Shellexpr是一个功能强大,并且比较复杂的命令,它除了可以实现整数计算,还可以结合一些选项对字符串进行处理,例如计算字符串长度、字符串比较、字符串匹配、字符串提取等。本节只讲解expr在整数计算方面的应用,并不涉及字符串处理,有兴趣的读者请自行研究。Shellexpr对于整数计算的用法为:expr表达式expr对表达式的格式有几点特殊的要求:出现在表达式... 继续阅读 >
202103-02 Shell字符串截取的实现方法(非常详细) Shell截取字符串通常有两种方式:从指定位置开始截取和从指定字符(子字符串)开始截取。从指定位置开始截取这种方式需要两个参数:除了指定起始位置,还需要截取长度,才能最终确定要截取的字符串。既然需要指定起始位置,那么就涉及到计数方向的问题,到底是从字符串左边开始计数,还是从字符串右边开始计数。答案是Shell同时支持两种计数方式。1)从字符串左边开始计数如果想从字符串的左边开始计数,那么截取字符串的具体格... 继续阅读 >