我有以下shell腳本:獲取參數
#! /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
中分配的網頁數量,然後必須將其餘行(例如「Implementation -1」或「Research \ Areas -1」)傳遞給python腳本。
現在的粘性位。當此示例文件的第三行處理它通過「研究\區」的python腳本作爲兩個單獨的參數,以證實:
>>> print sys.argv
['./DokuWikiHtml2Latex.py', 'html.tmp', 'Research', 'Areas', '-1']
我怎樣才能得到多字節,像「研究領域「從輸入文件到Python腳本的單個參數?我試過逃避'\',也做
./DokuWikiHtml2Latex.py html.tmp `echo ${section#* }`
除其他事情,但無濟於事。
輸入行末尾的數字是另一個參數,但是是可選的。
你應該把各地的數組元素的報價,你沒有設置到防止文件通配:'未設置「字段[0]」'(如果有文件名爲「fields0」)。演示:'test =(1 2 3); touch test0;未設置測試[0]; declare -p test;未設置「測試[0]」;申報-p測試' – 2010-07-19 17:40:55
@丹尼斯威廉姆森:謝謝。 – Philipp 2010-07-19 18:02:30
不客氣。我忘了證明一個名爲'test0'的變量,如果它存在的話,將會因爲文件的通配符和存在而被取消設置:'test =(1 2 3); TEST0 = 4; touch test0;未設置測試[0];回聲「test0 = $ test0」; declare -p test;未設置「測試[0]」;聲明-p測試「 – 2010-07-19 18:24:53