2012-02-02 61 views
0

稍新,以shell腳本我注意到一個意外的標記語法錯誤報告的格式bash的語法錯誤報告格式(基本)

`unexpectedtoken' # ie backtick unexpected_token singlequote 

什麼的反引號和單引號代表什麼?它們不在劇本中。 他們與殼有關,但是什麼?

更具體地說,我目前從同一行收到兩個錯誤報告,這應該會幫助我調試嘗試,但我不知道如何解釋它們。腳本有一個傳遞給函數的參數。

append2file \ 
"(common params for all samples; exemplar: ${monoArr2[@]:(-1)})" 

參數行(第154行)中的第一個paren是意外標記。這也會觸發第二個錯誤報告。

./process_v7.sh: line 154: syntax error near unexpected token `(' 
./process_v7.sh: line 154: `  "(common params for all read_2 samples; exemplar: ${monoArr2[@]:(-1)})" \' 

領先的反引號和雙引號字符串的開始之間的間隔必須告訴我的東西,這將有助於我的調試,但什麼??? TIA

中號

+0

上面的代碼很好,假設在\ 153行之後沒有空格,並且第152行不以\結尾。語法錯誤可能是由行140-152中的代碼引起的。展示更多。 – 2012-02-02 15:26:20

+0

解決了!我用vi從154行搜索double_quotes,並在腳本的前面發現了一個流浪者。感謝提示威廉。 – bobox 2012-02-02 16:30:52

回答

1

用於定義函數的語法是:

 
append2file() { 
    # some code that references parameters via $1, $*, [email protected], etc 
} 

這聽起來像你把裏面的東西()。不要這樣做。

+0

@ WPursell:謝謝,函數被定義好,但是調用確實看起來有誤導性;它傳遞一個字符串參數,它本身包含了包裝對。儘管這個調用看起來確實沒問題,但這樣做會讓人誤解。 – bobox 2012-02-02 16:29:35