本文關於在 Linux 下如果想一次過執行目錄下所有 Script 的方法。
在 Linux 下要執行目錄下所有 Script, 可以逐一把 Script 敲入鍵盤, 例如:
$ ./script.sh
$ ./script2.sh
$ ./script3.sh
……
$ ./script2.sh
$ ./script3.sh
……
除了這樣逐一輸入外, 可以用以下三種方法一次把目錄下的 Script 執行:
run-parts 指令
使用 run-parts 指令, 例如想執行 /home/opencli/test/ 目錄下所有以 “.sh” 結尾的 Script, 可以用以下指令:
$ run-parts –regex ‘.*sh$’ /home/opencli/test/
run-parts 也支援正規表逹式, 例如想執行所有以 “s” 字元開頭, 並以 “.sh” 結尾的檔案, 可以用以下指令:
$ run-parts –regex ‘^s.*sh$’ /home/opencli/test/
find 指令
find 指令主要用途是搜尋檔案, 而它的其中一個參數 “-exec”, 是可以對找到的檔案執行指令, 使用方法如下:
$ find /home/opencli/test/ -maxdepth 1 -type f -executable -name ‘*.sh’ -exec {} \;
以上指令會把 /home/opencli/test/ 目錄下, 所以有 “.sh” 結尾的檔案執行。
如果想把目錄下的子目錄內的檔案也一同執行, 只要將上面指令移除 “maxdepth” 選項便可以:
$ find /home/opencli/test/ -type f -executable -name ‘*.sh’ -exec {} \;
for
使用 Shell Script 的 for, 也可以做到相同的效果:
$ for f in /home/opencli/test/*.sh ; do [ -x “$f” ] && [ ! -d “$f” ] && “$f” ; done