2012-09-09 91 views
0

我試圖使用命令來運行下面的shell腳本:命令在Linux終端工作,但不是在shell腳本

$ bash linuxScript.sh 

這是我的腳本看起來像

#!/bin/bash 
svnroot=.../resources 
FINDBUGS_HOME="~/opt/findbugs-2.0.1" 
svn help 
svn export --force ".../resources/GUI.jar" 

opt=$1 
case $opt in 
    -normal) 
    echo "normal mode" 
    java -jar %FINDBUGS_HOME%\lib\findbugs.jar -textui -onlyAnalyze common.-,ufm.- -output UFMGUI_Normal.html -html GUI.jar;; 
    ... 
esac 

現在對於一些原因svn helpsvn export命令不起作用(我打電話給svn幫助只強調我的觀點)。

他們讓出了以下錯誤:

'unknown command: 'help 
Type 'svn help' for usage. 
' is not properly URI-encodedaire.com/repos/ufm_ui/branches/UFM_3_7/tools/build/resources/GUI.jar 

如果我已經要求它也呼喊非SVN相關的命令:

:command not founde 7: 
'inuxScript.sh: line 8: syntax error near unexpected token 'in 
'inuxScript.sh: line 8: 'case $opt in 

現在奇怪的是,如果我輸入終端中的svn命令一切正常!我試圖谷歌解決方案,我也搜索這個論壇,但我找不到任何有用的東西。

幫助不好意思。謝謝!

+0

是您的第一個位置參數集?否則'$ opt'將爲空 – knittl

+0

嘗試通過將'#!/ bin/bash -vx'作爲第一行來調試腳本。 –

+1

在第一行後面加上'set -x',看看實際運行的是什麼。你有一些引用問題。 – trojanfoe

回答

1
  1. 什麼是以下命令的輸出?:

    $ which bash 
    

    這是否顯示 「/斌/慶典」 如你預期?

  2. 什麼是下面的shell腳本的輸出(假設/tmp/x.sh)?:

    $ cat /tmp/x.sh 
    #!/bin/bash 
    svn help 
    
    $ bash /tmp/x.sh 
    

    它應該是 「SVN幫助中」 輸出。

  3. FINDBUGS_HOME看起來環境變量,它看起來在錯誤 被稱爲以下行:

    java -jar %FINDBUGS_HOME%\lib\findbugs.jar ... 
    

    爲%FINDBUGS_HOME%正確的符號? (它看起來像DOS符號...) 如果意思是shell env-var,是不是 $ FINDBUGS_HOME?

注意:$上面只是bash提示符與您的帖子相同。

+0

它不應該是'$ FINDBUGS_HOME'嗎? – abatishchev

0

看起來你的腳本保存在DOS格式,嘗試用VIM和審查文件格式

:set ff 

開放我想它會給你「DOS」

要將其轉換爲UNIX格式,使用

:set ff=unix 
:w 
+0

我有同樣的問題,試着這樣做。這沒有什麼區別。 – beth

相關問題