Rozważmy prostą pętlę:Proste Bash - dla f in *
for f in *.{text,txt}; do echo $f; done
chcę echo ważny tylko nazwy plików. Użycie zmiennej $ f w skrypcie wszystko działa świetnie, chyba że nie ma żadnych plików tego rozszerzenia. W przypadku zbioru pustego, $ f jest ustawione na * .text i wyżej Echos Line:
*.text
*.txt
zamiast echem niczym. Stwarza to błąd, jeśli próbujesz użyć $ f dla wszystkiego, co oczekuje prawdziwej prawdziwej nazwy pliku, a zamiast tego dostaje *.
Jeśli są jakieś pliki pasujące do symbolu wieloznacznego, więc nie jest to pusty zestaw, wszystko działa tak, jakbym chciał. na przykład
123.text
456.txt
789.txt
Jak mogę to zrobić bez błędów i bez pozornie nadmiernej złożoności pierwszego ciągu pasującego do $ f dla gwiazdki?
To jest dokładnie to, czego szukałem. Dzięki! – user1610022