当前位置: 首页 > news >正文

shell脚本总结3

目录

  • 前言
  • 实战
  • 脚本分析:
  • 补充 :
    • 示例:

前言

shell 是一种脚本语言。脚本:本质是一个文件,文件里面存放的是 特定格式的指令,系统可以使用脚本解析器 翻译或解析 指令 并执行(它不需要编译)shell 既是应用程序 又是一种脚本语言(应用程序 解析 脚本语言)。

实战

书接上回,上一篇我们-e执行了一段sql,赋值给了datainfo,今天我们看一下赋值给了datainfo里面的信息

echo $dateinfo
var=(${dateinfo//,/ })
mark_num=${var[0]}
begin_date=${var[1]}
end_date=${var[2]}
echo $mark_num
echo $begin_date
echo $end_dateif [ "$mark_num" = "NULL" ] ;thenexit -1
else echo  "今日有数据,数据量为$mark_num"
fi

输出结果可能为:

输出结果可能是
88,2025-02-10,2025-05-08
88
2025-02-10
2025-05-08
今日有数据,数据量为88

脚本分析:

上述代码分析如下:
这个脚本处理变量 dateinfo,它应该是一个包含逗号分隔值的字符串。脚本会将字符串分割成各个部分,赋值给不同的变量,并检查第一个部分是否为 “NULL”。如果是 “NULL”,脚本将以错误码退出。否则,它会打印一条消息,表明有可用数据。

以下是该脚本的每个部分所做的事情:

echo $dateinfo:打印 dateinfo 变量的内容。

var=(${dateinfo//,/ }):通过逗号分割 dateinfo 字符串,并将结果存储在数组 var 中。

mark_num=${var[0]}:将数组中的第一个元素赋值给 mark_num,它大概代表数据量。

begin_date= v a r [ 1 ] 和 e n d d a t e = {var[1]} 和 end_date= var[1]enddate={var[2]}:将数组中的第二个和第三个元素分别赋值给 begin_date 和 end_date。

echo $mark_num、echo $begin_date 和 echo $end_date:打印这三个变量的值。

if 条件检查 mark_num 是否等于 “NULL”。

如果 mark_num 是 “NULL”,脚本使用 exit -1 退出并返回错误码。
如果 mark_num 不是 “NULL”,则打印一条消息,指出有可用数据,其中 $mark_num 在单引号内不会扩展到变量的值。

补充 :

1.其实上一篇(shell脚本总结2)已经说明了一部分shell的使用场景,这个示例,告诉我们呢shell脚本可以用来校验数据,比如数据量的校验等。
2.这里补充一下echo的使用方法。
echo命令是脚本语言中的常用命令,作用相当于C语言里面的printf。在shell中,可以打印变量的值,或者输出指定的字符串,可以将结果写入到文件,也可以打印在终端。echo命令可以在显示器上显示一段文字,起到提示的作用,对于调试非常有帮助。

示例:

示例1:

echo 'hello world'
echo "hello world"

结果显示:

hello world
hello world

示例2:

b=100  
echo '数字b的值为:$b'
echo "数字b的值为:$b"
数字b的值为:$b
数字b的值为:100

总结:echo后的单引号表示强引用,单引号里面是什么内容就输出什么,而双引号是弱引用,变量的值会代替变量名输出

示例3:

echo -e "开始----->\n我爱\n北京\n天安门\n---->结尾"
结果如下:
开始----->
我爱
北京
天安门
---->结尾

总结:当我们需要使用特殊转义字符时,需要指定参数-e。

示例4:

a="huoguo"
b="chuanchuan"
c="$a$b"
echo "$a"
echo "$b"
echo "$c"
echo "${#c}"
echo "${a:1:3}"

结果如下:

huoguo
chuanchuan
huoguochuanchuan
16
uog

总结:
1.可以使用echo KaTeX parse error: Expected '}', got '#' at position 2: {#̲c}获取字符串长度。 2.{a:1:3}可以使用切片截取字符串长度,下标是从0开始。

示例5:

$ echo `date`
echo -e "开始---->\n$(date +"%F %T")\n<----end"

结果如下:

Tue May 20 16:50:40 CST 2025
开始---->
2025-05-21 15:37:24
<----end

示例6:

YEAR="$(date +"%Y")"
MONTH="$(date +"%m")"
DAY="$(date +"%d")"
WEEK="$(date +"%u")"
H_M="$(date +"%H:%M")"echo -e "$YEAR"
echo -e "$MONTH"
echo -e "$DAY"
echo -e "$WEEK"
echo -e "$H_M"

结果如下

2025
05
21
3
16:01

总结:
1.%F:以 年-月-日 格式输出完整日期(等价于 %Y-%m-%d)。
2.%T:以 时:分:秒 格式输出时间(等价于 %H:%M:%S)。

相关文章:

  • 网络安全管理之钓鱼演练应急预案
  • Python 训练营打卡 Day 31
  • Dirsearch 深度使用教程:从基础扫描到携带 Cookie 探索网站
  • Java—— IO流 第二期
  • PCB设计实践(二十三)什么是阻抗匹配,需要做啥
  • springboot链接nacos测试
  • 项目执行中缺乏风险管理,如何预防潜在问题?
  • 惠斯通电桥测量 数据采集模块 支持恒压/恒流的24位ADC电桥测量
  • PCB设计教程【入门篇】——电路分析基础-元件数据手册
  • 设计模式介绍
  • 解除diffusers库的prompt长度限制(SDXL版)
  • vue原生table表格实现动态添加列,一行添加完换行继续添加。el-select输入框背景颜色根据所选内容不同而改变
  • 深入解读RTP协议:RFC 3550的技术分析与应用
  • 在线地图瓦片URL
  • Spring Framework 的 spring-core 和 Spring Security 兼容版本
  • springboot3+vue3融合项目实战-大事件文章管理系统-自定义校验
  • 预警功能深度测评:如何用系统降低设备突发故障率?
  • 基于 STM32 的 PC ARGB 风扇控制器设计与实现
  • 工作安排小K
  • Elasticsearch生产环境性能调优指南
  • 营销最好的方法/北京seo排名方法
  • 网站收录需要多久/网络推广产品公司
  • 查询网站whois/外贸建站网站推广
  • 郑州政府网站建设/seo关键词布局案例
  • 摄影网站的意义/百度搜索广告