linux 运行文件夹中的所有shell脚本

kt06eoxx  于 2023-10-16  发布在  Linux
关注(0)|答案(3)|浏览(165)

我在一个文件夹中有许多.sh脚本,并希望一个接一个地运行它们。单个脚本可以执行为:

bash wget-some_long_number.sh -H

假设我的目录是/dat/dat1/files
如何一个接一个地运行bash wget-some_long_number.sh -H
我明白这几行应该起作用:
for i in *.sh;...do ....; done

nzkunb0c

nzkunb0c1#

使用这个:

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

并保留失败脚本的退出代码:

#!/bin/bash
set -e  # exit on error
for f in *.sh; do
  bash "$f"
done
5uzkadbs

5uzkadbs2#

有一个更简单的方法,你可以使用run-parts命令来执行文件夹中的所有脚本:

run-parts /path/to/folder
0mkxixxg

0mkxixxg3#

我遇到了这个问题,我不能使用循环和运行部分与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并行,这会执行目录中的所有内容,并以更快的速度增加buff。更不用说它不仅仅是脚本执行,你可以在函数中放入任何命令,它都会工作。

相关问题