如何將目錄下的腳本一次性所有執行

你們好,我是良許。程序員

咱們在平時工做的時候,爲了測試產品的一些功能,咱們會寫一系列的腳本,而且把它們放在同一個目錄下。在作測試的時候,咱們一般會依次執行這些腳本,而後記錄測試結果。面試

這樣作的弊端是顯而易見的,那就是效率過低。若是腳本數很少,你的「時間管理」能力又很強的話,那麼問題不大。但若是腳本數不少,那麼你極可能就有一拳打爆屏幕的衝動(別問我怎麼知道,要不是個人同事拼死拉着,個人屏幕極可能已經爆了好幾塊了)。正則表達式

本文就給你們介紹三種一次性執行目錄下全部腳本的方法。架構

1. run-parts

首先推薦一個很實用,但你們不是很熟悉的命令:run-parts 。它的基本用法以下:學習

$ run-parts option <directory-path>複製代碼

可是,並非目錄下全部的腳本都會被執行,仍是會有一些命名要求的。腳本的名字知足如下條件纔會被執行:大/小寫、數字、下劃線(_)、短槓線(-)。測試

爲了能選出知足條件的腳本,咱們一般須要加上 --regex 選項。假如咱們的目錄下有這些腳本:網站

因爲腳本通常是以 .sh 結尾,因此若是你的命名都符合規則的話,想要執行全部腳本的話,能夠這樣操做:spa

$ run-parts --regex 'sh$' .複製代碼

執行結果:code

若是你只想要執行以 s 開頭,sh 結尾的腳本,能夠結合以下正則表達式:cdn

$ run-parts --regex '^s.*sh$' .複製代碼

執行結果:

固然了,你能夠根據本身的腳本狀況,寫出對應的正則表達式。

爲了防止誤操做,在腳本真正執行以前,能夠先看下將被執行的腳本會有哪些。咱們能夠加上 --list 選項:

$ run-parts --list --regex '^s.*sh$' .複製代碼

執行結果:

如結果所示,加上 --list 選項後,它只會列出將要執行的腳本,便於你的核對,並不會真正去執行這些腳本。

2. find

可是,run-parts 這個命令仍是比較小衆,估計不少人並不知道這個命令,更不用說知道怎麼去使用了。另外一個執行目錄下全部腳本的方法是使用 find 命令,這個你們會更熟悉一些。

具體來說,咱們可使用 find 命令來找到目標目錄下全部的腳本,而後再使用 -exec 選項去執行找到的腳本。

$ find ~/scripts -maxdepth 1 -type f -executable -name 's*' -exec {} \;
STAY
HOME
STAY
SAFE複製代碼

上面的命令是指定了只在 scripts/ 目錄這個層級下找腳本,可是,你還能夠去掉這個限制,就能夠搜索當前目錄及其子目錄下全部的腳本了:

$ find -maxdepth 1 -type f -executable -name '*.sh' -exec {} \;複製代碼

3. for

若是你 Shell 的水平不錯的話,那麼 for 循環也是一個不錯的選擇。好比你想執行目錄下全部以 s 開頭的腳本,能夠這樣寫:

$ for f in ~/scripts/s* ; do [ -x "$f" ] && [ ! -d "$f" ] && "$f" ; done
STAY
HOME
STAY
SAFE複製代碼

若是你想執行目錄下全部的腳本,能夠作一個小小的改動:

$ for f in ~/scripts/*.sh ; do [ -x "$f" ] && [ ! -d "$f" ] && "$f" ; done
公衆號:良許Linux
hello world!
STAY
HOME
STAY
SAFE複製代碼

固然了,若是你還想要執行其它腳本,或者有其它需求,能夠發揮你的想象,寫出對應的命令來。

最後,最近不少小夥伴找我要Linux學習路線圖,因而我根據本身的經驗,利用業餘時間熬夜肝了一個月,整理了一份電子書。不管你是面試仍是自我提高,相信都會對你有幫助!目錄以下:

免費送給你們,只求你們金指給我點個贊!

連接:pan.baidu.com/s/1_6uniaFV… 提取碼:9pbc

也但願有小夥伴能加入我,把這份電子書作得更完美!

有收穫?但願老鐵們來個三連擊,給更多的人看到這篇文章

推薦閱讀:

相關文章
相關標籤/搜索