如何修复bash脚本?
我对Magento安装的自动化感兴趣。我发现一个很好的步骤,如何实现这一点。我下载了他们的脚本并从cli运行它:如何修复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
./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来执行它