В Bash просто используйте
shopt -s nullglob
for pdfFile in *.java;do
# your code goes here
done
Этот синтаксис предназначен для Bourne-подобных оболочек; опция nullglob
специфична для bash. Скобки, которые вы использовали ({}
), предназначены для оболочек в стиле C.
shopt -s nullglob
устанавливает опцию nullglob
, которая в основном указывает Bash, что глобы, которые не смогли найти соответствия, должны быть расширены в нулевую строку. По умолчанию, если *.java
не совпадает, он расширяется в себя (звездочка остается).
Если ваш Wget создан с поддержкой IRI, он автоматически обработает этот случай.
Взгляните на свой wget --version
. Мой показывает это:
GNU Wget 1.20.1.7-5dce-dirty built on linux-gnu.
-cares +digest +gpgme +https +ipv6 +iri +large-file +metalink +nls
+ntlm +opie +psl +ssl/gnutls
Важная часть для вас здесь +iri
. Большинство дистрибутивов должны компилировать его с включенным IRI по умолчанию.
РЕДАКТИРОВАТЬ :Похоже, что сервер в этом случае отправляет имя файла, закодированное в латинице -1. Хотя предположение по умолчанию всегда utf -8. В идеале сервер должен отправить заголовок Content-Disposition
, чтобы упомянуть об этом. Однако это может быть обработано Wget, если вы передадите ему опцию --remote-encoding=latin1
.
В более общем смысле, чем простоwget
:
Инструмент unvis
делает это с опцией -h
для указания процентного кодирования. (Обратите внимание, что в версиях инструмента для OpenBSD и MacOS этого нет.)
Ваше процентное -закодированное имя не в UTF -8, обратите внимание.
% printf '%s' 'spesa%20del%20settore%20sanit%E0.csv' | unvis -h | hexdump -C 00000000 73 70 65 73 61 20 64 65 6c 20 73 65 74 74 6f 72 |spesa del settor| 00000010 65 20 73 61 6e 69 74 e0 2e 63 73 76 |e sanit..csv| 0000001c % printf '%s\n' 'spesa%20del%20settore%20sanit%E0.csv' | unvis -h | iconv -f latin1 spesa del settore sanità.csv %