一个案例学习bat和shell脚本的编写

简介: 一个案例学习bat和shell脚本的编写
背景

有时候需要编写windows上的批处理文件,来代替命令行手动执行程序,虽然语法很简单,但是也需要一点时间来查找,编写,测试。由于用得不多,过一段时间有需要再用起来又忘了,只好再学一遍。也包括在linux上写shell脚本。这里介绍一个案例,批量执行多个python文件,只需要执行一次这个脚本,便自动完成所有测试。

任务

在目录./operators下有a.py,b.py,c.py,d.py等多个python文件,现在需要写一个脚本,分别在windows和linux下执行如下语句,即所有的python文件都将被执行两次(pr是脚本*.py内需要用的参数)

python ./operators/a.py
python ./operators/a.py pr
python ./operators/b.py
python ./operators/b.py pr
...
所用到的语法

用到的语法包括变量定义,循环遍历,字符串连接,自增变量等。这里贴出这个任务的bat脚本和shell脚本,对应来理解。test.bat文件如下

@echo off 
set Path=./operators
set OpsList=a;^
b;c;d;e;f;^
g;h
setlocal enabledelayedexpansion
set /a cnt=1
set python=d:\python36\python.exe
for %%i in (%OpsList%) do (
    echo "测试第!cnt!个算子文件"
    %python% %Path%/%%i.py
    %python% %Path%/%%i.py pr
    set /a cnt+=1
)

同样功能的test.sh文件

Path=./operators/
OpsList=(a \
b c d e f \
g h)
cnt=1
for i in ${OpsList[*]};
do
    echo "测试第${cnt}个算子文件"
    python ${Path}${i}.py
    python ${Path}${i}.py pr
    let cnt++
done

有几个注意事项

  • 变量赋值 = 前后不能有空格
  • 引用变量,windows的格式为前后百分号%var%,shell的格式为$var
  • 长字符串连接,window的bat用^,shell用反斜杠\
  • windows的格式,自增变量起作用需要setlocal enabledelayedexpansion这句
  • 字符串和变量的连接没有 + ,写到一起就行
相关文章
|
6天前
|
Java 关系型数据库 MySQL
Elasticsearch【问题记录 01】启动服务&停止服务的2类方法【及 java.nio.file.AccessDeniedException: xx/pid 问题解决】(含shell脚本文件)
【4月更文挑战第12天】Elasticsearch【问题记录 01】启动服务&停止服务的2类方法【及 java.nio.file.AccessDeniedException: xx/pid 问题解决】(含shell脚本文件)
33 3
|
1天前
|
弹性计算 运维 Shell
每天解析一个shell脚本(61)
【4月更文挑战第26天】shell脚本解析及训练(61)
12 3
|
1天前
|
弹性计算 运维 Shell
每天解析一个shell脚本(58)
【4月更文挑战第26天】shell脚本解析及训练(58)
67 0
|
1天前
|
弹性计算 Shell 数据安全/隐私保护
每天解析一个shell脚本(56)
【4月更文挑战第26天】shell脚本解析及训练(56)
13 0
|
2天前
|
运维 Shell Python
Shell和Python学习教程总结
Shell和Python学习教程总结
|
3天前
|
监控 Shell 应用服务中间件
第十二章 Shell脚本编写及常见面试题(二)
第十二章 Shell脚本编写及常见面试题(二)
|
3天前
|
监控 关系型数据库 Shell
第十二章 Shell脚本编写及常见面试题(一)
第十二章 Shell脚本编写及常见面试题(一)
|
3天前
|
监控 Shell
生产环境Shell脚本Ping监控主机是否存活(多种方法)
生产环境Shell脚本Ping监控主机是否存活(多种方法)
|
3天前
|
运维 Shell
Shell脚本判断IP是否合法性(多种方法)
Shell脚本判断IP是否合法性(多种方法)
|
9天前
|
运维 监控 Shell
利用Shell脚本编写局域网监控软件:实时监测主机连接情况
本文介绍了如何使用Shell脚本创建一个局域网监控工具,以实时检查主机连接状态。脚本包括扫描IP地址范围检测主机可达性及使用`netstat`监控ESTABLISHED连接。此外,还展示了如何每60秒将连接数数据自动提交到指定网站API,以便实时跟踪网络活动。这个自动化监控系统有助于提升网络安全性和故障排查效率。
36 0