Załóżmy, że mam skrypt, który otrzymuje ścieżkę jako parametr. Jak mogę wykonać wszystkie skrypty znajdujące się na tej ścieżce?
13
Zakładając, że przez ścieżkę rozumiesz ścieżkę do katalogu, użyj run-parts
. Od man run-parts
:
run-parts - run scripts or programs in a directory
Najpierw musisz ustawić uprawnienia do wykonywania wszystkich skryptów, które chcesz uruchomić. Zwykle run-parts
zignoruje katalogi, a także pliki, które nie są wykonywalne, znajdują się w tym katalogu.
Chociaż przed uruchomieniem powinieneś sprawdzić, które pliki będą uruchamiane przez --test
opcję:
run-parts --test /path/to/directory
Powinienem wspomnieć, że run-parts
ma ścisłą konwencję nazewnictwa dla skryptów do wykonania:
If neither the --lsbsysinit option nor the --regex option is given
then the names must consist entirely of ASCII upper- and
lower-case letters, ASCII digits, ASCII underscores, and ASCII minus-hyphens.
Sprawdź, man run-parts
aby uzyskać więcej pomysłów.
run-parts /home/you/Dropbox/scripts_to_run
zachowaj ostrożność przy nazywaniu ...Części wykonawcze będą działać, jeśli skrypty mają poprawne nazwy. Jeśli nie chcesz zajmować się zmianą nazwy skryptu w celu dopasowania do
run-parts
złożonego schematu nazewnictwa, możesz zrobić coś tak prostego jakSpowoduje to próbę wykonania wszystkich plików (i katalogów) znalezionych w
~/target
. Te2>/dev/null
komunikaty o błędach przekierowania, więc nie będzie narzekać, gdy próbuje uruchomić katalogi lub niewystąpienia jednego lub pliki wykonywalne.Alternatywnie możesz wypróbować bardziej wyrafinowane
Spowoduje to sprawdzenie, czy każdy z wyników jest plikiem (
[ -f $file ]
), jest wykonywalny ([ -x $file ]
) i tylko wtedy, gdy oba testy zakończą się powodzeniem, spróbuje wykonać plik.źródło