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

如何在终端和 PowerShell 中将一个命令自动重复执行多次

你可能有很多原因要将一个命令重复执行多次,本文介绍在多个平台下如何多次重复执行命令。


@TOC

背景

最近遇到一个偶然复现的单元测试错误,于是在每次运行时,打算重复运行多次来调查问题是否已经解决。

实际上,重复执行命令有更多用途:

  1. 通过重复执行来复现一些偶发的问题
  2. 执行一组命令,每次只有参数不同
  3. 大大减轻手工输入命令的工作量

Bash

Linux 或者 Mac 系统的终端中,可以使用 for 来完成重复执行命令,使用 ${} 来引用定义的变量。

for i in {1..10}; do echo ${i}; done

这表示从 1 到 10(两端的值都会取到),依次输出这些数。

比如,我们需要运行 100 次单元测试,那么:

walterlv@localhost:~$ for i in {1..100}; do dotnet test ./Walterlv.Tests.dll; done
Microsoft (R) 测试执行命令行工具版本 16.3.0
版权所有 (C) Microsoft Corporation。保留所有权利。
正在启动测试执行,请稍候...

总共 1 个测试文件与指定模式相匹配。

测试运行成功。
测试总数: 238
     通过数: 238
总时间: 1.6384 秒
Microsoft (R) 测试执行命令行工具版本 16.3.0
版权所有 (C) Microsoft Corporation。保留所有权利。
正在启动测试执行,请稍候...

总共 1 个测试文件与指定模式相匹配。

测试运行成功。
测试总数: 238
     通过数: 238
总时间: 1.7138 秒
...

PowerShell

PowerShell Core 是跨平台的配置框架,可以在 Windows/Linux/Mac 系统下使用。在 PowerShell 中,也可以使用 for

for ($i=1; $i -le 10; $i++) { echo $i }

这表示从 1 到 10(两端的值都会取到),依次输出这些数。

比如,我们需要运行 100 次单元测试,那么:

PS C:\Users\lvyi> for ($i=1; $i -le 100; $i++) { dotnet test .\Walterlv.Tests.dll }
Microsoft (R) 测试执行命令行工具版本 16.3.0
版权所有 (C) Microsoft Corporation。保留所有权利。
正在启动测试执行,请稍候...

总共 1 个测试文件与指定模式相匹配。

测试运行成功。
测试总数: 238
     通过数: 238
总时间: 1.6384 秒
Microsoft (R) 测试执行命令行工具版本 16.3.0
版权所有 (C) Microsoft Corporation。保留所有权利。
正在启动测试执行,请稍候...

总共 1 个测试文件与指定模式相匹配。

测试运行成功。
测试总数: 238
     通过数: 238
总时间: 1.7138 秒
...

参考资料

  • How To Run a Command Multiple Times in Terminal and PowerShell

我的博客会首发于 https://blog.walterlv.com/,而 CSDN 会从其中精选发布,但是一旦发布了就很少更新。

如果在博客看到有任何不懂的内容,欢迎交流。我搭建了 dotnet 职业技术学院 欢迎大家加入。

知识共享许可协议

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。欢迎转载、使用、重新发布,但务必保留文章署名吕毅(包含链接:https://walterlv.blog.csdn.net/),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我联系。

相关文章:

  • WPF:无法对元素“XXX”设置 Name 特性值“YYY”。“XXX”在元素“ZZZ”的范围内,在另一范围内定义它时,已注册了名称。
  • 一点点从坑里爬出来:如何正确打开 WPF 里的 Popup?
  • Windows Linux 系统中获取端口被哪个应用程序占用
  • 设置用户无需密码自动登录到 Windows 系统
  • 最简单的代码,让 WPF 支持响应式布局
  • 当无边框窗口被子窗口遮挡导致难以调节窗口大小时,可通过处理 NCHITTEST 消息重新支持调节窗口大小
  • 如何给 GitHub Pages 配置多个域名?
  • 通过子类化窗口(SubClass)来为现有的某个窗口添加新的窗口处理程序(或者叫钩子,Hook)
  • .NET Framework 和 .NET Core 在默认情况下垃圾回收(GC)机制的不同(局部变量部分)
  • .NET Windows:删除文件夹后立即判断,有可能依然存在
  • .NET 将混合了多个不同平台(Windows Mac Linux)的文件 目录的路径格式化成同一个平台下的路径
  • git 乱改你的换行符?一句话设置让 git 不再碰你某个文件的换行符
  • Linux Shell 中需要转义的字符
  • Unity3D 入门:Unity Editor 编辑器常用快捷键
  • Unity3D 入门:Unity 项目版本管理建议使用的 .gitignore 忽略文件和 .gitattributes 文件(2020年4月更新)
  • 5、React组件事件详解
  • Apache Zeppelin在Apache Trafodion上的可视化
  • JavaScript函数式编程(一)
  • Netty源码解析1-Buffer
  • Python连接Oracle
  • Redis的resp协议
  • Vim Clutch | 面向脚踏板编程……
  • Vue 动态创建 component
  • 包装类对象
  • 闭包,sync使用细节
  • 浏览器缓存机制分析
  • 实现菜单下拉伸展折叠效果demo
  • 微信开放平台全网发布【失败】的几点排查方法
  • 系统认识JavaScript正则表达式
  • Java数据解析之JSON
  • Play Store发现SimBad恶意软件,1.5亿Android用户成受害者 ...
  • 大数据全解:定义、价值及挑战
  • ​如何防止网络攻击?
  • #WEB前端(HTML属性)
  • $.ajax,axios,fetch三种ajax请求的区别
  • (env: Windows,mp,1.06.2308310; lib: 3.2.4) uniapp微信小程序
  • (第一天)包装对象、作用域、创建对象
  • (附源码)小程序 交通违法举报系统 毕业设计 242045
  • (转)机器学习的数学基础(1)--Dirichlet分布
  • ****Linux下Mysql的安装和配置
  • ***汇编语言 实验16 编写包含多个功能子程序的中断例程
  • *++p:p先自+,然后*p,最终为3 ++*p:先*p,即arr[0]=1,然后再++,最终为2 *p++:值为arr[0],即1,该语句执行完毕后,p指向arr[1]
  • ./indexer: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object fil
  • .Net - 类的介绍
  • .NET Core 2.1路线图
  • .net core webapi 部署iis_一键部署VS插件:让.NET开发者更幸福
  • .net Stream篇(六)
  • .net 后台导出excel ,word
  • .NET 使用 ILRepack 合并多个程序集(替代 ILMerge),避免引入额外的依赖
  • .net 微服务 服务保护 自动重试 Polly
  • .Net程序猿乐Android发展---(10)框架布局FrameLayout
  • .NET开源快速、强大、免费的电子表格组件
  • .Net中wcf服务生成及调用
  • :not(:first-child)和:not(:last-child)的用法
  • [20160902]rm -rf的惨案.txt