• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Przekierowanie pliku tekstowego jako parametrów nazw plików

0 głosów
385 wizyt
pytanie zadane 17 stycznia 2019 w Systemy operacyjne, programy przez Jackal99 Nowicjusz (160 p.)
edycja 17 stycznia 2019 przez Jackal99
Cześć,

mam problem, który wstrzymuje mi dalszą pracę nad skryptem Linuxa.

Idea jest taka, aby pozyskać nazwy określonych plików z katalogu (spełniających warunki). Wysłałem je do pliku txt. W pliku są nazwy plików które chciałbym podać jako parametry do dalszej części skryptu - wyświetlić je, doklejać itp. Sęk w tym, że wiem co zrobić dalej z nimi, mam gotową listę wykonującą się zgodnie z założeniami ale nie umiem podać tego systemowi jako parametrów - jakieś podpowiedzi?

Uprzedzam od razu - wiem że można to zrobić za pomocą xargs przekierowując na cat ale pomiędzy plikami potrzebuję umieścić jeszcze tekst a xargs zleje mi wszystko w jeden blok...

2 odpowiedzi

0 głosów
odpowiedź 18 stycznia 2019 przez ciemna_strona_klamki Gaduła (4,360 p.)
Przekaż nazwę pliku jako argument i w skrypcie iteruj go linia po linii

https://www.cyberciti.biz/faq/unix-howto-read-line-by-line-from-file/
0 głosów
odpowiedź 18 stycznia 2019 przez miro Pasjonat (23,870 p.)

Jak masz ścieżki do plików rozdzielone jakimś tekstem to może najłatwiej byłoby użyć awk.
 

awk '{print $9}' < ls.txt | xargs cat

w ls.txt jest lista output ls -l
$9 to wydobycie 9 kolumny 

komentarz 18 stycznia 2019 przez Jackal99 Nowicjusz (160 p.)
Dziękuję, zrobiłem to na argumentach i jedyny problem jaki teraz jeszcze mam to zwrócenie liczby parametrów które wykonał skrypt poprawnie (bo liczba ogólnych parametrów jest oczywiście prosta jak drut ;) $@)
komentarz 19 stycznia 2019 przez miro Pasjonat (23,870 p.)
edycja 19 stycznia 2019 przez miro
awk 'BEGIN {errors=0}{result=system("cat " $9); if (result) errors++} END {print "errors: " errors}' < ls.txt 

Sprawdź czy działa, bo dopiero uczę się awk. laugh
Poprawiłem polecenie - teraz przez system() możesz wywoływać inny program. 
Jakbyś jednak wolał przerobić to na skrypt bashowy to tutaj masz jak sprawdzać errory:
https://askubuntu.com/questions/29370/how-to-check-if-a-command-succeeded

Podobne pytania

0 głosów
2 odpowiedzi 905 wizyt
pytanie zadane 27 lutego 2018 w Algorytmy przez jjanek Użytkownik (630 p.)
+1 głos
1 odpowiedź 350 wizyt
pytanie zadane 15 lutego 2016 w Inne języki przez Misiek Mądrala (5,320 p.)
0 głosów
2 odpowiedzi 1,398 wizyt
pytanie zadane 19 listopada 2015 w Inne języki przez pierep94 Bywalec (2,720 p.)

93,604 zapytań

142,528 odpowiedzi

322,995 komentarzy

63,090 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...