LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1108|回复: 7

请问bash脚本的正确与否会随系统不同而不同?

[复制链接]
发表于 2006-2-20 23:07:35 | 显示全部楼层 |阅读模式
我有一应用软件(Fluent),以前在好几台机器上安装,运行都很好(都是Redhat系列,bash)。
但是我在一台debian(bash)上正确安装后就无法运行了,这个软件有一执行脚本 fluent.sh,该软件一般不要运行环境设置(这个执行脚本都完成了)。结果我运行后显示如下:

/usr/local/Fluent.Inc/bin/fluent: line 3600: unexpected EOF while looking for matching ``'
/usr/local/Fluent.Inc/bin/fluent: line 3878: syntax error: unexpected end of file

以前从来没有遇到过,这个执行脚本我从来没改过,安装目录都是软件缺省的。我看了一下 3600行

        CX_EXE=`cd $CORTEX/$FLUENT_ARCH ;  \
        echo $CXBASE.[0-9].[0-9].[0-9]* | tr ' ' '\012' \
        | sort $sort_flag -r -t. +1 -2 +2 -3 +3 -4 \
        | grep -v 'busy' \
        | head -1`
        EXE=$CORTEX/$FLUENT_ARCH/$CX_EXE

` 匹配的很对呀,本来这是软件自带的脚本,不会出语法错误的。同样一个脚本为什么在这台机器上就不行呢?请高人给点建议,这个脚本有3877行,见附件。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
发表于 2006-2-21 04:42:25 | 显示全部楼层
really don't see any error. but for your goodness, maybe try to change `` to $() and see if that's better.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-2-21 09:58:40 | 显示全部楼层
谢谢回复,我用 vim 的 :%s/`\(.*\)`/$(\1)/g 将  ` `匹配全转化为 $( ),但是又有新问题了

/usr/local/Fluent.Inc/bin/fluent: line 3586: syntax error near unexpected token `esac'
/usr/local/Fluent.Inc/bin/fluent: line 3586: `          esac'
  3586行 上下文:

       CXBASE=cortex
        case $HOOPS_PICTURE in
            opengl*)
                case $FLUENT_ARCH in
                    aix* | alpha* | dec32a | power* | rs6000) \
                        CXFILE=$(echo $CORTEX/$FLUENT_ARCH/cortexogl.3.[1-2].*)
                        if [ -f "$CXFILE" ]; then
                            CXBASE=cortexogl
                        fi
                esac;;
        esac      <---------------------这是3586行

        case $FLUENT_ARCH in
            lnx86*)
                sort_flag="-g"
                ;;
            *)  sort_flag="-n"
                ;;
        esac

怎么会错这么多呢?脚本好象不会有错的呀,我换了另一个版本的fluent,安装还是这个问题,而在我原来的机器上是好的。请问是否会是编码问题,这台机器是UTF-8, 以前是GBK。
回复 支持 反对

使用道具 举报

发表于 2006-2-21 12:44:56 | 显示全部楼层
No, that part seems ok. its probably somewhere else... since the file is quite big, it needs sometime to find out where is the syntax error...
回复 支持 反对

使用道具 举报

发表于 2006-2-21 13:56:44 | 显示全部楼层

re

听说这是BASH的一个BUG。但是我现在还没有看到到补丁。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-2-21 15:24:24 | 显示全部楼层
谢谢回复。
我也希望是bug,但是,我换了 csh,和 sh 问题依旧。其实,我仍然认为这个脚本并没有问题,我们这里好几个同学都用得好好的。也许是环境设置问题,或是缺了什么东西,但是,提示显示的是脚本的语法错误,让人找不到问题所在啊!
回复 支持 反对

使用道具 举报

发表于 2006-2-21 22:32:08 | 显示全部楼层
probably some differences b/w bash 3.x and bash 2.x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-2-27 20:30:17 | 显示全部楼层
谢谢大家的回复,现在问题基本解决了,初步判断是版本兼容问题

由于该执行脚本的开头,  #!/bin/sh

我的debian用的 sh 是3.1,启动失败。我将之改为 #!/bin/bash,我的bash版本 3.1.5(1)-release,仍旧失败。一气之下从 Fedora 3中拷了个 bash过来,改名为 bsh 放到 /bin, 然后将 执行脚本的开头改为 #!/bin/bsh。 果然成功启动了。但是还不确定以后运行还会出现什么问题。

各位是否也认为是版本兼容问题呢,我这样做法是否可行,还有更好的办法吗,请哪位说明一下这一兼容的问题,这里先谢谢了。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表