如何在終端和 PowerShell 中將一個命令自動重複執行多次
- 2020 年 3 月 13 日
- 筆記
你可能有很多原因要將一個命令重複執行多次,本文介紹在多個平台下如何多次重複執行命令。
背景
最近遇到一個偶然復現的單元測試錯誤,於是在每次運行時,打算重複運行多次來調查問題是否已經解決。
實際上,重複執行命令有更多用途:
- 通過重複執行來複現一些偶發的問題
- 執行一組命令,每次只有參數不同
- 大大減輕手工輸入命令的工作量
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]) 。