У меня есть следующий сценарий оболочки:
#! /bin/sh
while read page_section
page=${page_section%%\ *}
section=${page_section#* } #NOTE: `%* }` is NOT a comment
wget --quiet --no-proxy www.cs.sun.ac.za/hons/$page -O html.tmp & wait
# echo ${page_section%%\ *} # verify correct string chopping
# echo ${page_section#* } # verify correct string chopping
./DokuWikiHtml2Latex.py html.tmp $section & wait
done < inputfile
И такой входной файл:
doku.php?id=ndewet:tools:tramonitor TraMonitor
doku.php?id=ndewet:description Implementation -1
doku.php?id=ndewet:description Research\ Areas -1
Скрипт загружает несколько веб-страниц, указанных в inputfile
, и затем должен передать оставшуюся часть строки (например, «Реализация -1» или «Исследования \ Области -1») скрипту python.
Теперь немного. Когда третья строка этого примера файла обрабатывается, он передает «Research \ Areas» скрипту python как два отдельных аргумента, что подтверждается:
>>> print sys.argv
['./DokuWikiHtml2Latex.py', 'html.tmp', 'Research', 'Areas', '-1']
Как я могу получить раздел из нескольких слов, например "Области исследований", из входного файла в один аргумент для сценария python? Я пытался убежать от '\', а также делал
./DokuWikiHtml2Latex.py html.tmp `echo ${section#* }`
между прочим, но безрезультатно.
Число в конце строки ввода является другим аргументом, но необязательным.