2011-12-08 70 views
0

我已經寫了TCSH一個簡單的shell腳本殼.the代碼只是從用戶需要的輸入,然後運行基礎上,input.I一些已經使用開關情況下這一點,但我的問題是什麼我輸入它結束執行默認情況。Linux的TCshell腳本

#!bin/tcsh 
echo "creating workdir = setup " 
echo "extracting = extract" 
echo "creating setups= create " 
echo "validate = all(for running all validation),ve ,fa ,annotate ,Lib, CDL" 
set user_input = "$<" 
echo "entered string is -" $user_input 
switch (user_input) 
case setup: 
./validateSource -sc -setup -check ve fa annotate Lib CDL -source source -library  library -reference reference 
breaksw 
case extract: 
./validateSource -sc -extract -check ve fa annotate Lib CDL -source source -library library -reference reference 
breaksw 
case (create): 
./validateSource -sc -create -check ve fa annotate Lib CDL -source source -library library -reference reference -workdir workdir_nowb_EDA_7p2 
breaksw 
case (all): 
./validateSource -sc -validate -check ve fa annotate Lib CDL -workdir workdir_nowb_EDA_7p2 -force 
breaksw 
case (ve): 
./validateSource -sc -validate -check ve -workdir workdir_nowb_EDA_7p2 -force 
breaksw 
case (fa): 
./validateSource -sc -fa -check ve -workdir workdir_nowb_EDA_7p2 -force 
breaksw 
case (annotate): 
./validateSource -sc -validate -check annotate -workdir workdir_nowb_EDA_7p2 -force 
breaksw 
case (Lib): 
./validateSource -sc -validate -check Lib -workdir workdir_nowb_EDA_7p2 -force 
breaksw 
case (CDL) : 
./validateSource -sc -validate -check CDL -workdir workdir_nowb_EDA_7p2 -force 
breaksw 
default : 
echo "wrong string entered" 
endsw 
+0

'tcsh'的't'表示終端。 'tcsh'腳本沒有意義,您可以簡單地使用'csh'來使用相同的語法。 – mouviciel

回答

2

閱讀着名的csh considered harmful論文。

考慮使用另一個shell。最便攜的是限制自己到posix shell(與dash,bash甚至zsh提供正確配置時良好的合規性)。

我更傾向於去zsh

要調試您的shell腳本,請嘗試將-v-x傳遞到shell,例如, /bin/tcsh -x -v yourshellscript

1

如果你必須使用csh,(你應該認真考慮@Basile Starynkevitch的建議),你的腳本有一些錯誤。

首先,你錯過了/在第一行:

#!/bin/tcsh 

而且你switch語句是錯誤的,你需要一個在$變量前面:

switch ($user_input) 

你可以從這裏拿走它。請注意,如果您輸入create,它將不會匹配(create),這是您在案例聲明中的含義。