运行多个脚本

时间:2012-01-13 15:59:39

标签: perl bash

我有很多bash脚本。例如

script1_1.sh
script1_2.sh
script1_3.sh

等...

我想知道,有没有办法让我在另一个脚本中运行这些。我不需要手动添加每个。那么通过使用for循环?它增加了一个像

这样的数字
for (i=0; i < 40; i++)
   ./script1_[i].sh

我还想检查每个脚本是否有效,如果没有,它将退出for循环。

if ./script[i] (command unsuccessful)
then break?

任何人都可以帮我写这段代码吗?我是脚本语言的新手。

2 个答案:

答案 0 :(得分:3)

你真的很接近回答你自己的问题。 C风格的for循环适用于您的场景,但如果您的脚本是随机命名的,则可以使用数组。您可以使用||,如果返回非零退出状态,它将执行右侧。您也可以使用if语句,就像您在问题中证明的那样,带有“!”如果在命令中(如果没有)。

scripts=( script1_1.sh script1_2.sh script1_3.sh )

for script in "${scripts[@]}"; do
   ./"$script" || { echo "$script failed"; break; }
done

像你的问题一样使用for循环:

for ((i=1;i<4;i++)); do
   ./script1_${i}.sh || { echo "$script failed"; break; }
done

答案 1 :(得分:0)

由于您已将此问题标记为perl,因此您也可以在Perl单行中执行此操作:

perl -e 'foreach(1..40){system("sh script_" . $_ . ".sh")==0 or die $!;print "script_" . $_ . ".sh done\n";}'