Pozwól mi najpierw opisać moją sytuację, pracuję na platformie Linux i mam zbiór .bmp
plików, które dodają jeden do numeru zdjęcia od filename0022.bmp
do filename0680.bmp
. Łącznie 658 zdjęć. Chcę móc uruchomić każdy z tych obrazów poprzez plik .exe, który działa na obrazie, a następnie kopie plik do pliku określonego przez użytkownika, ma również pewne argumenty progowe: niższy, górny. Tak typowe wezwanie do pliku wykonywalnego jest:Jak zapętlić polecenie wykonywalne w terminalu w systemie Linux?
./filter inputfile outputfile lower upper
Czy istnieje sposób, że mogę pętla to wezwanie nad wszystkimi plikami tylko z terminala lub tworząc pewien rodzaj skryptu bash? Mój problem jest podobny do tego: Execute a command over multiple files with a batch file, ale tym razem pracuję w terminalu wiersza poleceń Linuksa.
Oto, co próbowałem i wydrukował kilka drobiazgów na moim ekranie, ale w rzeczywistości nie tworzył żadnych plików ... #!/Bin/atakujących do ((a = 022; a <= 680; a ++)) zrobić printf”./filter płód 00-2.3.5um__voi0% 04d.bmp fetus_threshold_% 04d 90 240" $ a wykonane gdzie 90 i 240 to dolne i górne argumenty, o których wspomniałem wcześniej. Nie stworzyłem skryptu bash, więc użyłem emacsa do utworzenia pliku, w którym wpisałem poprzednie linie kodu. Następnie zapisałem plik emacs po prostu jako test. nic z tym nie wynika, ponieważ właśnie to widziałem kilka przykładów w Internecie. Jakieś dalsze wskazówki? –
spróbuj zrobić to w pliku .sh (z nowym dodatkiem, który zrobiłem powyżej), a następnie uruchom plik, wpisując [[bash myfile.sh]] w tym samym katalogu – scottyaz
Cóż, dobre wieści ... to przynajmniej iteruje to czas dookoła i działa nawet na pierwszym obrazie, wtedy dostaję błędy z oprogramowania, którego używa program. Rzeczą, której nie rozumiem, jest to, że próbuje uruchomić się na inputfile0000 i mówimy, żeby zaczynało się od pliku inputfile0022.bmp. Jedynym obrazem wyjściowym, który otrzymuję, jest plik outputfile0000.bmp. Oto plik basha, który zapisałem jako threshold.sh: #!/bin/bash dla ((a = 022; a <= 680; a ++)) do printf "./filter6 fetus-00-2_3.5um__rec_voi% 04d.bmp fetus_threshold_% 04d.bmp 90 240" $ a | "sh" done –