当前位置: 首页 > 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)。

http://www.xdnf.cn/news/572077.html

相关文章:

  • 【LLMs篇】12:Qwen3 技术报告翻译
  • 人工智能路径:技术演进下的职业发展导航
  • 20个关于Java编程语言的常见问题
  • 从微积分到集合论(1630-1910)(历史简介)——第2章——牛顿(Newton)和莱布尼兹(Neibniz)以及莱布尼兹传统(H.J.M.Bos)
  • 2025年人工智能新应用与新技术全景解析
  • Qt+线段拖曳示例代码
  • 【UE5】环形菜单教程
  • 现代计算机图形学Games101入门笔记(十九)
  • 汽车电子电气架构诊断功能开发全流程解析
  • Linux nbd 网络块设备(2)-内核实现
  • fork 和 写时拷贝
  • NV009NV010美光闪存颗粒NV011NV012
  • 【Elasticsearch】字段别名
  • el-radio-group 与 el-dropdown 一起使用时的注意事项
  • Pytorch基础操作
  • cookie跨域共享踩的坑
  • sqli-labs第十八关——POST-UA注入
  • 使用MATLAB输出1000以内所有完美数
  • MoManipVLA-北京邮电-2025.3.17-移动操控-未完全开源
  • UML 时序图 使用案例
  • PostGIS实现栅格数据导出PNG应用实践【ST_AsPNG 】
  • 乘“4”而上,进取不止|Aloudata 的变与不变
  • 【专四 | 2022年真题】LANGUAGE USAGE逐题总结
  • dedecms织梦全局变量调用方法总结
  • 【OCCT+ImGUI系列】009-Geom2d-Geom2d_AxisPlacement
  • 使用Jenkins部署nodejs前端项目
  • 开源Vue表单设计器FcDesigner中组件联动的配置教程
  • 中国地图上标注颜色的方法
  • 食品饮料行业AI转型趋势分析与智能化解决方案探索​
  • 实战5:个性化数字艺术生成与销售