如何在終端和 PowerShell 中將一個命令自動重複執行多次

  • 2020 年 3 月 13 日
  • 筆記

你可能有很多原因要將一個命令重複執行多次,本文介紹在多個平台下如何多次重複執行命令。

背景

最近遇到一個偶然復現的單元測試錯誤,於是在每次運行時,打算重複運行多次來調查問題是否已經解決。

實際上,重複執行命令有更多用途:

  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:Userslvyi> 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 秒  ...

參考資料

本文會經常更新,請閱讀原文: https://blog.walterlv.com/post/run-a-command-multiple-times-in-terminal-and-powershell.html ,以避免陳舊錯誤知識的誤導,同時有更好的閱讀體驗。

本作品採用 知識共享署名-非商業性使用-相同方式共享 4.0 國際許可協議 進行許可。歡迎轉載、使用、重新發布,但務必保留文章署名 呂毅 (包含鏈接: https://blog.walterlv.com ),不得用於商業目的,基於本文修改後的作品務必以相同的許可發布。如有任何疑問,請 與我聯繫 ([email protected])