如何修复bash脚本?

如何修复bash脚本?,bash,magento,automation,Bash,Magento,Automation,我对Magento安装的自动化感兴趣。我发现一个很好的步骤,如何实现这一点。我下载了他们的脚本并从cli运行它: ./mage-install.sh localhost root test "abcABC123" "1.7.0.2" 并得到这样的错误: ./mage-install.sh: 21: ./mage-install.sh: Syntax error: "(" unexpected (expecting "}") 我不熟悉bash,下面是代码的一部分,负责它: compareVer

我对Magento安装的自动化感兴趣。我发现一个很好的步骤,如何实现这一点。我下载了他们的脚本并从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'
}

您能解释一下如何修复它吗?

我应该像这样运行脚本:

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

我应该像这样运行脚本:

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

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

#/bin/sh

这指定在命令行上运行脚本时要使用的程序,即
/mage install.sh
。作者可能在一个系统上开发了它,其中
/bin/sh
符号链接到他们的bash安装,但在许多系统上并非如此(例如,我有Crunchbang,它使用dash)


您可以使用
bash mage-install.sh blah blah blah blah
使用bash显式运行它,也可以将第一行更改为指向实际运行bash的内容。您可以使用
哪个bash
查看它所在的位置,但它应该在
/bin/bash
中。真正的问题在于脚本的第一行:

#/bin/sh

这指定在命令行上运行脚本时要使用的程序,即
/mage install.sh
。作者可能在一个系统上开发了它,其中
/bin/sh
符号链接到他们的bash安装,但在许多系统上并非如此(例如,我有Crunchbang,它使用dash)


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

代码没有问题。问题是您没有使用bash.btw运行它,
typeset
已过时,请不要使用它。代码没有问题。问题是您没有使用bash.btw运行它,
排版
已过时,请不要使用它。或者只需添加
#/bin/bash
.sh
文件的第一行,并使用
/script.sh
执行它。或者只需添加
#/bin/bash
.sh
文件的第一行,并使用
/script.sh
执行它。这就是它。只需使用bash而不是shh来执行它,这就是它。只需使用bash而不是sh来执行它