Mam skrypt w języku Python, który akceptuje argumenty łańcuchowe.
$ python script.py "one image.jpg" "another image.jpg"
Działa to zgodnie z oczekiwaniami.
Argumenty w języku Python: ["one image.jpg", "another image.jpg"]
Gdybym musiał podać nazwy plików, zrobiłbym to,
$ python script.py $(ls "/some/dir/*.jpg")
Argumenty w języku Python: ["one", "image.jpg", "another", "image.jpg"]
Jeśli użyć -Q
z ls
poleceniem, mogę owinąć wyników między cudzysłowy. Jednak cytaty pozostają znakami ucieczki w skrypcie Python, tj.
$ python script.py $(ls -Q "/some/dir/*.jpg")
Argumenty w języku Python: ['"one image.jpg"', '"another image.jpg"']
Jak rozwinąć ls
nazwy plików do odpowiednich ciągów znaków, które będą używane jako argumenty? (jak w moim pierwszym przykładzie)
"$(ls -Q '/some/dir/*.jpg')"
. Istnieją jednak lepsze alternatywy, jak stwierdzono w odpowiedziach.