shell脚本

linux shell 基础语法A-2

允我心安 提交于 2019-11-29 02:27:43
A-1讲了一些基本的语法,A2部分继续上次的内容接着讲。 shell是一门编程语言,自然也有结构化的表示方法。常见的编程语言结构化就是判断和循环。shell中的判断分为3类:数值判断,字符判断,文件判断。 判断的几种形式 If command Then command Fi If command Then command Else command Fi If command Then command Elif command Then command Else command fi (1)数字判断 实例:简单的猜数字 (2)字符判断 实例:判断输入的选项 (3)文件判断 实例:创建log文件前检查目标路径是否存在 #!/bin/bash if [ ! -d /mnt/123testlog/2019-08-31 ] then mkdir -p /mnt/123testlog/2019-09-31 fi 还需要关注 If test xxxx的用法 对参数值得判断处理 复合条件判断 If [] && [] If [] || [] 双括号 --双圆括号(数学表达式高级功能) --双方括号(字符串高级功能) 多选择判断时使用if结构就比较繁琐了,采用case更佳 Case Case xxx in p1) cmd ;; p2) cmd ;; *) default cmd ;; Esac

记录shell脚本中的特殊变量

谁都会走 提交于 2019-11-29 01:55:42
1、特殊的位置变量 关于上面的相关变量介绍,也可以参考man手册,执行命令“man bash”,然后搜索关键字“Special Parameters”即可看到相关变量的解释。 2、bash shell内置的变量命令 bash Shell包含一些内置命令。这些内置命令在目录列表里是看不见的,它们由Shell本身提供。常用的内部命令有:echo、eval、exec、export、read、shift。 (1)echo——在屏幕上输出信息 常用参数如下: (2)export——将自定义的局部变量转换为全局变量。 (3)shift——将位置变量进行偏移 若在脚本中写入shift,那么就会改变原本$1、$2...所对应的变量内容,默认是向后偏移一个,原本的$2变成了$1,原本的$1则没有了。也可以在脚本中写入“”shift 3”,则表示偏移三位,原本的$4会变成$1,$5会变成$2...那么,如果我的位置变量就两个呢?它就会循环的进行偏移,假设现在$1对应的是“a”,$2对应的是b,我脚本中写了一行“shift 5”那么它就会对$1、$2循环进行偏移,最终的结果$1对应的是b。 关于其他不常用的命令,若有需要,自行百度使用方法吧,这里就不解释了。 3、shell变量字串 可以通过下表来了解shell的变量字串,也可以执行“man bash”命令之后,搜索“Parameter

shell脚本中echo显示内容带颜色

北慕城南 提交于 2019-11-29 01:55:26
shell算数运算 ((i=$j+$k)) 等价于 i=`expr $j + $k` ((i=$j-$k)) 等价于 i=`expr $j -$k` ((i=$j*$k)) 等价于 i=`expr $j \*$k` ((i=$j/$k)) 等价于 i=`expr $j /$k` Let expressions 执行一个或多个表达式。表达式中的变量前不必有$.如果表达式中包含了空格或其他特殊字符,则必须引起来。 例:let “I = I + 1” 或 let i=i+1 算术运算符指的是可以在程序中实现加、减、乘、除等数学运算的运算符。Shell中常用的数学运算符如下所示。 — +:对两个变量做加法。 — -:对两个变量做减法。 — *:对两个变量做乘法。 — /:对两个变量做除法。 — **:对两个变量做幂运算。 — %:取模运算,第一个变量除以第二个变量求余数。 — +=:加等于,在自身基础上加第二个变量。 — -=:减等于,在第一个变量的基础上减去第二个变量。 — *=:乘等于,在第一个变量的基础上乘以第二个变量。 — /=:除等于,在第一个变量的基础上除以第二个变量。 — %=:取模赋值,第一个变量对第二个变量取模运算,再赋值给第一个变量。 在使用这些运算符时,需要注意到运算顺序的问题。例如输入下面的命令,输出1+2的结果。 echo 1+2 Shell并没有输出结果3

Shell能做什么

孤街醉人 提交于 2019-11-29 01:52:28
shell概览 一、shell能做什么 1.自动化系统初始化(update,软件安装,时区设置,安全策略...) 2.自动化批量软件部署程序(LAMP/LNMP/Tomcat/Nginx) 3.管理应用程序(KVM,集群管理扩容,MySQL,DELLR720批量RAID) 4.日志分析处理程序(PV,UV,200,!200,top100,grep/awk) 5.自动化备份恢复程序(MySQL完全备份/增量+Crond) 6.自动化管理程序(批量远程修改密码,软件升级,配置更新) 7.自动化信息采集及监控程序(收集系统/应用状态信息,CPU,Mem,Disk,Net,TCP Status,Apache,MySQL) 8.配合Zabbix信息采集(收集系统/应用状态信息,CPU,Mem,Disk,Net,TCP Status,Apache,MySQL) 9.自动化扩容(增量云主机——>业务上线) zabbix监控CPU 80%+|-50% Python API AWS/EC2(增加/删除云主机)+Shell Script(业务上线) 10.俄罗斯方块,打印三角形,打印圣诞树,打印五角星,运动的小火车,坦克大战,排序算法实现 11.Shell理论上将可以做任何事(一切取决业务需求) 程序语言执行: C —— 编译 —— 二进制机器码(CPU可以直接执行,不用再处理,x86复杂指令集

shell中的数学运算

柔情痞子 提交于 2019-11-29 00:58:20
expr命令 ======= 最开始,Bourne shell提供了一个特别的命令用来处理数学表达式。expr命令允许在命令行上处理数学表达式,但是特别笨拙: $ expr 1 + 5 6 expr命令能识别一些不同的数字和字符串操作符,如下表: ======================================================================= 操作符 描 述 ----------------------------------------------------------------------- ARG1 | ARG2 如果没有参数是null或0,返回ARG1;否则返回ARG2 ARG1 & ARG2 如果没有参数是null或0,返回ARG1;否则返回0 ARG1 < ARG2 如果ARG1小于ARG2,返回1;否则返回0 ARG1 <= ARG2 如果ARG1小于或等于ARG2,返回1;否则返回0 ARG1 = ARG2 如果ARG1等于ARG2,返回1;否则返回0 ARG1 != ARG2 如果ARG1不等于ARG2,返回1;否则返回0 ARG1 >= ARG2 如果ARG1大于或等于ARG2,返回1;否则返回0 ARG1 > ARG2 如果ARG1大于ARG2,返回1;否则返回0 ARG1 + ARG2

Linux编程 22 shell编程(输出和输入重定向,管道,数学运算命令,退出脚本状态码)

≡放荡痞女 提交于 2019-11-29 00:58:04
1. 输出重定向    最基本的重定向是将命令的输出发送到一个文件中。在bash shell中用大于号(>) ,格式如下:command > inputfile。例如:将date命令的输出内容,保存到指定的输出文件中。        如果文件已存在,重定向操作符会用新的文件数据覆盖已有文件。这种情况下可以用双大于号(>>) 来追加数据。如下图所示:      2. 输入重定向   输入重定向和输出重定向正好相反。输入重定向是将文件的内容重定向到命令,而非将命令的输出重定向到文件。 输入重定向符号是小于号(<),格式如下:Command < inputfile。下面是test1文件和wc命令一起使用输入重定向的例子。 wc 命令可以对文件内容进行计数包括文本的行数、文本的词数、文本的字节数。        另外一种输入重定向的方法,称内联输入重定向(符号是 <<)。这种方法无需使用文件进行重定向,只需要在命令行中指定用于输入重定向的数据就可以了。计数包括文本的行数、文本的词数、文本的字节数。      3. 管道   管道符号是单个竖线( | ) ,管道被放在命令之间,将一个命令的输出重定向到另一个命令中。格式: command1 | command2 。Linux系统会同时运行这两个命令,在系统内部将它们连接起来。在第一个文件产生输出的同时,输出会被立即送给第二个命令

shell杂谈(一)

大城市里の小女人 提交于 2019-11-29 00:51:30
一 明确 shell应用场景 :底层自动化的脚本! Python :CMDB管理 ,上层,Web界面CMDB的管理,监控的软件,大数据的分析! 给自己的任务 :每天写一些 有趣的系统脚本 ,不管是用什么语言! 初级运维 :只会搭建基础的服务! 对自己的定位 :精通shell,熟悉python和perl以及script! shell的强大 :shell脚本没有太多的函数库,但是有2000多个linux命令可被使用! 学了语言的目的 :解决问题,解决常见的服务问题! 没有人随随便便的成功 讲解 ,会说, 必会的30道题 ################################################## 一 什么是shell shell是一个 命令行解释器 (解释给操作系统听),内核和用户沟通的 桥梁 或者说是接口! 二 什么是shell脚本 当linux命令行或语句不 在 命令行 中执行 ,而是通过 程序文件执行 ,该程序就被称为shell脚本或者shell程序,shell程序类似DOS系统下 批处理 程序(*.bat),用户在shell脚本中敲入一系列的命令以及语句组合,这些 命令 、 变量 和 流程控制语句 等有机的结合就形成一个功能强大的shell脚本! 注意 :思考脚本执行可能遇到的问题! 需求1 :清除/var/log/下messages日志文件 #!

php页面传参给shell脚本

拥有回忆 提交于 2019-11-29 00:29:20
代码如下: <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>MAC search</title> </head> <body align="middle" bgcolor="gray"> <h1><font size="20" face="Verdana" color="blue">MAC search</font></h1> <form action="" method="post"> MAC: <input type="text" name="mac" size="20"/> <input type="submit" value="submit"/> </form> <?php if(isset($_POST['mac'])&&$_POST['mac']!=''){ $mac=$_POST['mac']; $output = shell_exec("macsearch $mac"); echo "$output"; } ?> </body> </html> 分析如下: 1.通过表单传入一个参数“mac” <form action="" method="post"> MAC: <input type="text" name="mac" size=

模拟器shell脚本操作APP

会有一股神秘感。 提交于 2019-11-29 00:29:10
#!/system/bin/sh i=0 count=20 while(($i<$count)) do am start -n cn.wondershare.wsapp/cn.wondershare.wsapp.MainActivity sleep 8 adb shell input swipe 476 1035 450 192 300 sleep 3 adb shell input tap 532 1860 sleep 3 am force-stop cn.wondershare.wsapp sleep 3 i=$(($i+1)) done 来源: https://www.cnblogs.com/ai594ai/p/11435576.html

shell脚本删除log日志

送分小仙女□ 提交于 2019-11-29 00:23:22
删除log文件简单shell脚本   经常会遇到日志把磁盘占满的情况,引起低级故障。我个人在实际工作中,尝试了如下的方法,比较简单,而且快捷有效。 #!/bin/bash # /root/log_delete.sh dir_log_1="/home/log/log1" dir_log_2="/home/log/log2" dir_log_3="/home/log/log3" if [ -d "${dir_log_1}" ]; then find "${dir_log_1}"/* -name '*.txt' -mtime +14 -exec rm -rf {} \; fi if [ -d "${dir_log_2}" ]; then find "${dir_log_2}"/* -name '*.txt' -mtime +14 -exec rm -rf {} \; fi if [ -d "${dir_log_3}" ]; then find "${dir_log_3}"/* -name '*.txt' -mtime +14 -exec rm -rf {} \; fi chmod +x /root/log_delete.sh sh /root/log_delete.sh 来源: http://www.cnblogs.com/bjx2020/p/8086124.html