2012-12-01 76 views
0

我對Magento安裝的自動化感興趣。我發現一個不錯的article與步驟,如何實現這一點。我下載了他們的腳本和命令行運行它:如何解決bash腳本?

./mage-install.sh localhost root test "abcABC123" "1.7.0.2" 

而得到這樣的錯誤:

./mage-install.sh: 21: ./mage-install.sh: Syntax error: "(" unexpected (expecting "}") 

我不熟悉的bash,這裏是代碼的一部分,負責它:

compareVersions() 
{ 
    typeset IFS='.' 
    typeset -a v1=($1) 
    typeset -a v2=($2) 
    typeset n diff 

    for ((n=0; n<4; n+=1)); do 
    diff=$((v1[n]-v2[n])) 
    if [ $diff -ne 0 ] ; then 
     [ $diff -le 0 ] && echo '-1' || echo '1' 
     return 
    fi 
    done 
    echo '0' 
} 

其中線21是:

typeset -a v1=($1) 

你能解釋一下如何解決它嗎?

+2

代碼沒有問題。問題是你沒有用bash運行它。 – hobbs

+0

對不起,如何運行它? –

+0

btw,'typeset'已過時,請勿使用它。 –

回答

3

真正的問題是腳本的第一行:

#!/bin/sh

這指定要使用哪個程序來執行腳本時你可以在命令行上運行它,例如./mage-install.sh。編寫者可能在一個系統上開發它,其中/bin/sh符號鏈接到他們的bash安裝,但在許多系統上並不是這種情況(例如我有使用破折號的Crunchbang)。

你可以用bash使用bash mage-install.sh blah blah blah顯式運行它,或者你可以改變第一行指向實際運行bash的東西。您可以使用which bash來查看它的位置,但它應該位於/bin/bash

+0

就是這樣。只需用bash而不是sh來執行它 –

0

我應該像這樣運行腳本:

bash mage-install.sh localhost root test "abcABC123" "1.7.0.2" 
+0

或者乾脆添加'#!/bin/bash'到你的'.sh'文件的第一行,然後用'./ script.sh'執行它。 – Rubens