Parametre olarak bir yol alan bir komut dosyası olduğunu varsayalım. Bu yolda bulunan tüm komut dosyalarını nasıl yürütebilirim?
Parametre olarak bir yol alan bir komut dosyası olduğunu varsayalım. Bu yolda bulunan tüm komut dosyalarını nasıl yürütebilirim?
Yanıtlar:
Bir dizinin yolunu kastettiğinizi varsayarsak, kullanın run-parts. Gönderen man run-parts:
run-parts - run scripts or programs in a directory
İlk önce, çalıştırmak istediğiniz tüm komut dosyalarında yürütme iznini ayarlamanız gerekir. Normalde run-partsdizinleri yoksayar ve yürütülebilir olmayan dosyalar da bu dizinde bulunur.
Her ne kadar çalıştırmadan önce hangi --testseçeneklerin çalıştırılacağını kontrol etmelisiniz :
run-parts --test /path/to/directory
Bu run-partskomut dosyaları yürütmek için sıkı bir adlandırma kuralı olduğunu belirtmek gerekir :
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.
man run-partsDaha fazla fikir edinmek için kontrol edin .
run-parts /home/you/Dropbox/scripts_to_run.. ama isimlendirmeye dikkat et ..
Komut dosyalarınız doğru isimlere sahipse çalışma parçaları çalışır. Komut dosyalarınızı run-partskarmaşık adlandırma şemasına uyacak şekilde yeniden adlandırmak istemiyorsanız , bu kadar basit bir şey yapabilirsiniz.
for file in ~/target/*; do $file 2>/dev/null; done
Bu, bulunan tüm dosyaları (ve dizinleri) yürütmeye çalışır ~/target. 2>/dev/nullDizinleri veya olmayan çalıştırılabilir dosyaları çalıştırmak çalışırken yönlendirmeler hata iletileri şikayet etmeyecek şekilde.
Alternatif olarak, daha karmaşık olanları deneyebilirsiniz.
for file in ~/target/*; do
[ -f "$file" ] && [ -x "$file" ] && "$file"
done
Bu, sonuçların her birinin bir dosya ( [ -f $file ]), yürütülebilir ( [ -x $file ]) olup olmadığını kontrol eder ve yalnızca bu testlerin her ikisi de başarılı olursa dosyayı yürütmeye çalışır.