如何修复bash脚本?

时间:2012-12-01 08:57:02

标签: bash magento automation

我对Magento安装的自动化感兴趣。我发现了一个很好的article步骤,如何实现这一目标。我下载了他们的脚本并从cli:

运行它
./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 个答案:

答案 0 :(得分:3)

真正的问题在于脚本的第一行:

#!/bin/sh

这指定在命令行(即./mage-install.sh)上运行脚本时用于执行脚本的程序。编写者可能是在/bin/sh与他们的bash安装符号链接的系统上开发的,但在许多系统上情况并非如此(例如我有使用破折号的Crunchbang)。

您可以使用bash mage-install.sh blah blah blah使用bash显式运行它,也可以将第一行更改为指向实际运行bash的内容。您可以使用which bash查看其所在位置,但应该位于/bin/bash

答案 1 :(得分:0)

我应该像这样运行脚本:

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