2010-12-10 105 views
0

运行下面的脚本,我收到:语法错误:无效的算术运算符

line 8: ((: i = 0 : syntax error: invalid arithmetic operator (error token is " ")

任何想法有什么不好?我可以使用iMac上的文本编辑器进行编辑吗?有些事情可能与CR有关?

domains=(yourdomain.com yourdomain2.com) 
sqldbs=(yourdb1 yourdb2) 
opath=$HOME/backup/ 
mysqlhost=mysqlhostname 
username=mysqlusername 
password=mysqlpassword 
suffix=$(date +%m-%d-%Y) 
for ((i = 0 ; i < ${#domains[@]} ; i++)) 
do 
    cpath=$opath${domains[$i]} 
    if [ -d $cpath ] 
    then 
     filler="just some action to prevent syntax error" 
    else 
     echo Creating $cpath 
     mkdir -p $cpath 
    fi 
    mysqldump -c -h $mysqlhost --user $username --password=$password ${sqldbs[$i]} > ${cpath}/${sqldbs[$i]}_$suffix.sql 
done 

回答

0

我复制并粘贴第8行(因为它在脚本中)并且工作正常。看起来,解析错误是由于第8行中的额外字符造成的。

0

如果您使用的是notepad ++,请转到编码> UTF8无编码的编码。对不起,我对Mac软件一无所知。

+1

不可能。 BOM是文件中的第一件事,OP的获取和错误** ** **。 – delnan 2010-12-10 22:11:58

1

错误代码告诉你问题是什么:你有一个额外的空间。第8行应该是:

for (i=0; i<${#domains[@]}; i++) 
+0

我改变第8行的建议,现在我收到了:第8行:语法错误附近的意想不到的标记'(' 第8行:'for(i = 0; i <$ {#domains [@]}; i ++)' – Giorgos 2010-12-11 09:20:42

+0

@越狱,你用bash还是sh? – 2010-12-11 15:51:39

+0

脚本在这里提到:http://wiki.dreamhost.com/Mysqldump SHELL =/bin/bash – Giorgos 2010-12-11 16:57:22