2012-12-01 59 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