AvantFAX修复bash脚本错误


AvantFAX repair bash scripting error

我正在修复我的Elastix盒子上安装的AvantFAX,四处挖掘,我发现了一个脚本,可以修复一个已知的缺陷,该缺陷会导致网站变成空白。我没有写这个剧本,这是原件http://sourceforge.net/p/avantfax/discussion/540878/thread/441bd3dc/

当我运行它时,它不工作。我得到错误:

[root@elastixincludes]#bash scriptfilename.sh
文件"classes.php"编辑
scriptfilename.sh:第4行:意外标记";"附近出现语法错误
scriptfilename.sh:第4行:`if;然后‘

#
echo "File '"classes.php'" edit."
for i in $(ls ); do
if ; then
NAME=$i
i=${i:0:1}
LETTER=$(echo $i | sed -e 's///g')
if ; then
sed -i "/config.php/a'require_once ''$NAME'';"  classes.php
sed -i "/config.php/a'require_once ''htmlMimeMail5.php'';"  classes.php
fi
fi
done

echo "Function '"__autoload'" comment out."
sed -i "/function __autoload/c'/** function __autoload"  classes.php
n=$(grep -niw 'function __autoload' classes.php|awk -F: '{ print $1
}');
n=$(($n+3));
sed -i "$(echo $n)i' */"  classes.php
--------------------------------------------------------------------------------
Using php5.3.7 on centos 6.0

Johann

有几个语法错误:if ; then行不是有效的命令,因为缺少条件。其中缺少在命令完成时返回0或非0值的命令。条件应该是什么,我一点也不知道。

我发布了一篇文章,展示了在这里升级到php5.3以上后对avantfax的修复

这是代码:

#!/bin/bash
#
echo "File '"classes.php'" edit."
for i in $(ls ); do
if [ -f $i ]; then
NAME=$i
i=$
LETTER=$(echo $i | sed -e 's/[^A-Z]//g')
if [ ! -z $LETTER ]; then
sed -i "/config.php/a'require_once ''$NAME'';" classes.php
sed -i "/config.php/a'require_once ''htmlMimeMail5.php'';" classes.php
fi
fi
done
echo "Function '"__autoload'" comment out."
sed -i "/function __autoload/c'/** function __autoload" classes.php
n=$(grep -niw 'function __autoload' classes.php|awk -F: '{ print $1 }');
n=$(($n+3));
sed -i "$(echo $n)i' */" classes.php