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)。