我有很多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?
任何人都可以帮我写这段代码吗?我是脚本语言的新手。
答案 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";}'