簡體   English   中英

運行文件夾中的所有 shell 腳本

[英]Run all shell scripts in folder

我在一個文件夾中有很多.sh腳本,我想一個接一個地運行它們。 單個腳本可以執行為:

bash wget-some_long_number.sh -H

假設我的目錄是/dat/dat1/files

我怎樣才能一個接一個地運行bash wget-some_long_number.sh -H

我明白這些行中的某些內容應該有效:

for i in *.sh;...do ....; done

用這個:

for f in *.sh; do
  bash "$f" 
done

如果您想在腳本失敗時停止整個執行:

for f in *.sh; do
  bash "$f" || break  # execute successfully or break
  # Or more explicitly: if this execution fails, then stop the `for`:
  # if ! bash "$f"; then break; fi
done

你想運行,例如, x1.sh , x2.sh , ..., x10.sh

for i in `seq 1 10`; do
  bash "x$i.sh" 
done

保留失敗腳本的退出代碼(響應@VespaQQ):

#!/bin/bash
set -e
for f in *.sh; do
  bash "$f"
done

有一種更簡單的方法,您可以使用run-parts命令來執行文件夾中的所有腳本:

run-parts /path/to/folder

我遇到了這個問題,我無法使用循環和運行部分與 cron 一起工作。

回答:

foo () {
    bash -H $1 
    #echo $1
    #cat $1
}
cd /dat/dat1/files #change directory
export -f foo #export foo
parallel foo ::: *.sh #equivalent to putting a & in between each script

您使用 GNU 並行,這會執行目錄中的所有內容,並以更快的速度增加它的增益。 更不用說它不僅僅是腳本執行,你可以在函數中放置任何命令,它會起作用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM