Я не знаком с расширением переменных в bash. То, что я пытаюсь сделать, это:
У меня есть папка с большим количеством PDF, размер которой я хочу уменьшить. Команда для PDF 'foo.pdf' будет такой:
pdfsizeopt.py foo.pdf foo.pdf
Как сделать это для всех pdf в папке с командой bash?
for i in *.pdf; do pdfsizeopt.py $i.pdf $i.pdf; done
Но pdfsizeopt.py жалуется, что не было pdf.
Там нет имен файлов с пробелами.
РЕДАКТИРОВАТЬ: Спасибо Джону ! Линия работает! Если я помещу это в make-файл, это не так (потому что я понятия не имею о таких вещах):
compile:
for i in *.pdf; do pdfsizeopt.py "$i" "$i"; done
Я получил:
for i in *.pdf; do pdfsizeopt.py "" ""; done
info: This is pdfsizeopt.py rUNKNOWN size=316003.
info: using Java for Multivalent: /usr/bin/java
info: loading PDF from:
Traceback (most recent call last):
File "/home/AW/bin/pdfsizeopt/pdfsizeopt.py", line 7835, in <module>
main(sys.argv)
File "/home/AW/bin/pdfsizeopt/pdfsizeopt.py", line 7797, in main
).Load(file_name)
File "/home/AW/bin/pdfsizeopt/pdfsizeopt.py", line 3440, in Load
f = open(file_data, 'rb')
IOError: [Errno 2] No such file or directory: ''
make: *** [compile] Fehler 1