2010-05-31 239 views
0

有人能解釋我這是什麼錯誤意味着:未知錯誤

> ./rank lines.in 
'nknown option: `- 
Usage: tcsh [ -bcdefilmnqstvVxX ] [ argument ... ]. 

這是我的腳本排名:

#! /bin/tcsh -f 
set line = `cat ${1}` 
echo $line 

我認爲,這個問題我已經是第一行#! /bin/tcsh -f 我正在研究Windows!但我編寫腳本在Windows編輯器後,我轉換它使用dos2unix排名,可能是什麼問題,預先感謝任何幫助

+1

您是否真的必須使用tcsh而不是bash或Bourne shell? tcsh對於腳本編程非常糟糕,並且有很多缺陷。當我使用它時,它在90年代已經很差了! – Makis 2010-05-31 15:52:46

+0

我知道,但這只是我學習的一部分,我想了解基礎知識,所以你能幫助我嗎? – lego69 2010-05-31 15:54:16

回答

2

我不認爲你的dos2unix工作。看起來你仍然有一個\r在它不喜歡的散列爆炸線的末尾。它看起來像是看到/bin/tcsh -f\r,解釋,作爲/bin/tcsh -f -\r,然後試圖打印錯誤消息:

Unknown option: `-\r' 

\r導致最終報價出現在該行的開頭。如果您想要查看文件中的內容,請嘗試cat -A ./rank以打印所有隱藏的字符。您可能會看到

#! /bin/tcsh -f^M$ 
0

我安裝tcsh到我的Linux機器並運行該腳本,它的工作,所以我猜你的換行符是錯誤的。

這個錯誤似乎意味着當調用tcsh shell時它會收到無​​效的參數。我認爲它得到的是整個腳本作爲參數列表。我試圖改變-f來-g(不會被識別爲tcsh的參數)和我:

Unknown option: `-g' 
Usage: tcsh [ -bcdefilmnqstvVxX ] [ argument ... ]. 

注意如何還告訴我無效參數的名稱?

要麼你的tcsh開始出錯。啓動tcsh shell時可以給出默認參數。你嘗試過開始嗎?

但是真的,學習tcsh的唯一原因是如果你需要維護一些舊的tcsh腳本。即使如此,如果可能的話,我會先將它們轉換爲其他腳本語言。如果您想學習shell腳本,請嘗試使用bash或bourne shell。有很多reasons爲什麼tcsh會讓你生氣。