I have many .sh
scripts in a single folder and would like to run them one after another. A single script can be executed as:
bash wget-some_long_number.sh -H
Assume my directory is /dat/dat1/files
How can I run bash wget-some_long_number.sh -H
one after another?
I understand something in these lines should work:
for i in *.sh;...do ....; done
Use this:
for f in *.sh; do bash "$f" done
If you want to stop the whole execution when a script fails:
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
It you want to run, e.g., x1.sh
, x2.sh
, ..., x10.sh
:
for i in `seq 1 10`; do bash "x$i.sh" done
To preserve exit code of failed script (responding to @VespaQQ):
#!/bin/bash set -e for f in *.sh; do bash "$f" done
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With