当前位置: 首页 > Linux

【编程硬核科普】Linux下Shell编程杂记

时间:2023-04-06 11:21:34 Linux

本文主要讲一些常用的Shell编程知识,包括:日期格式化、清除文件内容、Shell字符串截取、Shell中使用运算符、RANDOM随机数、强制变量的算术运算(加法和减法)、转义特殊字符等。日期格式1.各种日期格式转换格式:2020-02-2411:50例子:显示当前时间命令:datedate'+%c'date'+%D'date'+%x'date'+%T'date'+%X'输出:2.显示过去和未来的时间date命令的另一个扩展是-d选项,它可以快速找出一个特定的日期。哪一天是相对于当前日期、从现在开始的天数或周数,或之前(过去)的天数。具体指令如下:date-d'2weeks'2周后的日期date-d'nextmonday'(下周一的日期)date-dnext-day+%Y%m%d(明天的日期)或者:date-dtomorrow+%Y%m%ddate-dlast-day+%Y%m%d(昨天的日期)或者:date-dyesterday+%Y%m%ddate+%Y%m%d--date="+1day"//显示第二天的日期使用ago命令可以得到过去的日期:date-d'30daysago'(30天前的日期)用负数得到oppositedate:date-d'dec14-2weeks'(相对:dec14这个日期前两周的日期)date-d'-100days'(日期100天前)date-d'50days'(日期50dayslater)plusSubtractthespecifieddays/hours/minutes从指定日期减去指定天数:echo$(date-d"2020-02-2411:50:183days"+"%Y%m%d%H")三天后:2020022711将指定小时添加到指定日期:echo$(date-d"2020-02-2411:50:181小时"+"%Y%m%d%H")一小时后:2020022412从指定日期减去指定小时:echo$(date-d"2020-02-2411:50:18-6hour"+"%Y%m%d%H")6添加指定分钟到指定日期之前的小时:echo$(date-d"2020-02-2411:50:1810minute"+"%Y%m%d%H")十分钟后参考文章:DateofLinuxcommand-timelinux清除文件内容的三种方法1、用vi/vim命令打开文件后,输入“%d”清除并保存。但当文件内容较大时,处理速度较慢。命令如下:vimfile_name2。使用cat命令时【推荐】,命令如下:cat/dev/null>file_name3。使用echo命令清除,此时会写入文件中输入一个空行“\n”,【注意,使用echo时,>是清除文件后写入,>>是追加write]命令如下:echo"">file_nameShell字符串截取函数:${string:start:length}从字符串左边的start字符开始,向右边截取length字符。${string:start}从字符串左边的开始字符开始截取,直到结束。${string:0-start:length}从字符串右边的start字符开始,向右截取length个字符。${string:0-start}从字符串右边的起始字符开始截取,直到结束。${string#*chars}从string中*chars第一次出现的位置开始,截取*chars右边的所有字符。${string##*chars}从string中最后出现的*chars开始,截取*chars右边的所有字符。${string%*chars}从string中第一次出现的*chars开始,截取*chars左边的所有字符。${string%%*chars}从string中最后出现的*chars开始,截取*chars左边的所有字符。例子:从字符串左边截取:第二个字符到第九个字符url="c.biancheng.net"echo${url:2:9}结果是biancheng。找到第一个*字符,截取右边所有字符url="http://c.biancheng.net/index.html"echo${url#*:}结果为//c.biancheng.net/index。HTML。推荐文章:Shell字符串截取:http://c.biancheng.net/view/1...shell中使用的运算符列表关系运算符:-eq检测两个数是否相等,相等返回true。[$a-eq$b]返回真。-ne检查两个数字是否相等,如果不相等则返回真。[$a-ne$b]返回真。-gt测试左边的数是否大于右边的数,如果是则返回真。[$a-gt$b]返回false。-lt测试左边的数字是否小于右边的数字,如果是则返回真。[$a-lt$b]返回真。-ge检查左边的数字是否大于右边的数字,如果是,则返回真。[$a-ge$b]返回false。-le检查左边的数是否小于或等于右边的数,如果是,则返回真。[$a-le$b]返回真。布尔运算符列表:!不运算,如果表达式为真则返回假,否则返回真。[!假]返回真。-oOR运算,如果其中一个表达式为真,则返回真。[$a-lt20-o$b-gt100]返回真。-a和运算,两个表达式都为真返回真。[$a-lt20-a$b-gt100]返回false。字符串运算符列表:=测试两个字符串是否相等,相等返回真。[$a=$b]返回false。!=测试两个字符串是否相等,如果不相等则返回真。[$a!=$b]返回真。-z检查字符串的长度是否为0,为0则返回真。[-z$a]返回假。-n检查字符串长度是否为0,不为0则返回真。[-z$a]返回真。str检查字符串是否为空,如果不为空则返回true。[$a]返回真。推荐文章:shell脚本的简单使用:三--算子使用:https://blog.csdn.net/iteye_8560/article/details/82681032**RANDOM随机数**在BASH环境下,RANDOM变量的内容为得到0~32767之间的随机数。0到10之间的值:echo$(($RANDOM%10))也可以使用declare来声明值类型:declare-inumber=$RANDOM*100/32767;强制对变量进行算术运算(加法和减法)`expr$variable-1`variable=3variable=`expr$variable-1`echo$pos转义特殊字符使用反斜杠\转义shell中的特殊字符[单引号而双引号会影响\]的使用,下面是一个例子:[root@autoCheckIn]#echo*autoCheckIn.logdate.loglastDate.logtest.sh[root@autoCheckIn]#echo\**[root@autoCheckIn]#echo$$[root@autoCheckIn]#echo$lastDate2020-02-2422:17[root@autoCheckIn]#echo\$lastDate$lastDate[root@autoCheckIn]#参考文章:1.shell脚本的简单使用:三--运营商使用https://blog.csdn.net/iteye_8560/article/details/826810322,linuxshell对指定日期https://blog.csdn.net/u010670加减一小时或一分钟..._source=blogxgwz03,linux清除文件内容的三种方法https://www.cnblogs.com/zqifa...祝你工作顺利,加油。【程序员硬核科普】系列是晚上闲暇时间半小时到一小时即可完成的科普文章。不懂的可以自己搜索资料,学习后做笔记,旨在克服拖延症。文中可能有很多疏漏之处,敬请指正!▼往期精彩回顾▼【程序猿硬核科普】为什么SSD删除后无法恢复数据|硬盘数据恢复软件【程序猿硬核科普】学习使用Markdown语法写博客Linux命令Crontab-定时任务2020Java面试宝典-JavaSE基础