LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
楼主: hhyyy9

新接到公司任务急需将,CMD文件转换为LINUX启动文件。希望高手帮忙

[复制链接]
 楼主| 发表于 2004-4-26 22:57:00 | 显示全部楼层
rem好像是注释吧,那就用#?home_king斑主?
 楼主| 发表于 2004-4-26 22:59:05 | 显示全部楼层
哦~了解,那么翻译过来就是:
[PHP]@echo off
# $Id: run.bat,v 1.0.0.0 2001/10/31 11:52:05 larryi Exp $
# Startup batch file for dxp System.

# This batch file written and tested under Windows NT
# Improvements to this file are welcome

if not "%SYSSOFT_DXP_HOME%" == "" goto start

SET SYSSOFT_DXP_HOME=.
if exist "%SYSSOFT_DXP_HOME%\runserver.sh" goto start

SET SYSSOFT_DXP_HOME=
echo Unable to determine the value of SYSSOFT_DXP_HOME.
goto eof

:start
set CLASSPATH="%SYSSOFT_DXP_HOME%\syssoftdxp.jar;%SYSSOFT_DXP_HOME%\DxpDemo.jar;%SYSSOFT_DXP_HOME%\lib\jdom.jar;%SYSSOFT_DXP_HOME%\lib\syssoftutil.jar;%SYSSOFT_DXP_HOME%\lib\classes12.jar;%SYSSOFT_DXP_HOME%\lib\xerces.jar;%SYSSOFT_DXP_HOME%\lib\jce1.2.1\jce1_2_1.jar;%SYSSOFT_DXP_HOME%\lib\jce1.2.1\sunjce_provider.jar"
java -classpath %CLASSPATH% com.syssoft.dxp.DxpRecieveData
:eof[/PHP]

对不?斑主?
发表于 2004-4-26 23:14:44 | 显示全部楼层
当然不对啦,兄弟误解我的意思了,可能我表达能力不好吧。我再说一遍。
有两点要注意:
1.用[ -n $ENVIRON ]来判断环境变量非空,用[ -e $file ] && [ -x $file ]判断文件是否存在以及可执行
2.环境变量的设置

请兄弟先查阅shell编程的语法基础,置顶帖子有。
发表于 2004-4-26 23:16:20 | 显示全部楼层
纯粹地转换过来是无意义的,因为Java在Linux下的配置体系与M$可能截然不同,甚至根本不用什么启动脚本。具体情况具体分析,好吗?
 楼主| 发表于 2004-4-27 09:20:04 | 显示全部楼层
不用启动?不会把,斑主大哥,我这个.cmd是在win下得一个java程序,我想转到l下可能还是要启动脚本才能运行啊
我粗略写了个,不知道是不是漏洞百出呢?帮忙看看:

---------------------


#!/bin/sh
# -----------------------------------------------------------------------------
# Start Script for the TRS Server
# This batch file written and tested under Linux
# Improvements to this file are welcome
# $Id: runserver.sh,v 1.0 2004/04/07 11:33:38 patrickl Exp $
# -----------------------------------------------------------------------------


if [ -n "%SYSSOFT_DXP_HOME%" ]; then
  goto start
fi

SET SYSSOFT_DXP_HOME=.

if [ -e "%SYSSOFT_DXP_HOME%/runserver.sh" ] && [ -x "%SYSSOFT_DXP_HOME%/runserver.sh" ]; then
  goto start
fi

SET SYSSOFT_DXP_HOME=
echo "Unable to determine the value of SYSSOFT_DXP_HOME."
goto eof

:start
set CLASSPATH="%SYSSOFT_DXP_HOME%/syssoftdxp.jar;%SYSSOFT_DXP_HOME%/DxpDemo.jar;%SYSSOFT_DXP_HOME%/lib/jdom.jar;%SYSSOFT_DXP_HOME%/lib/syssoftutil.jar;%SYSSOFT_DXP_HOME%/lib/classes12.jar;%SYSSOFT_DXP_HOME%/lib/xerces.jar;%SYSSOFT_DXP_HOME%/lib/jce1.2.1/jce1_2_1.jar;%SYSSOFT_DXP_HOME%/lib/jce1.2.1/sunjce_provider.jar;%SYSSOFT_DXP_HOME%/lib/mm.mysql-2.0.4-bin.jar"
java -classpath %CLASSPATH% com.syssoft.dxp.DxpRecieveData
:eof

exec "%SYSSOFT_DXP_HOME%/runserver.sh" start "$@"
发表于 2004-4-27 09:52:33 | 显示全部楼层
自己参考SHELL的语法手册一边写一边调试就是了.具体有不明白的地方再拿到论坛上来问.


比如说我就不知道bash shell里面还有诸如
==========================================================
if [ -n "%SYSSOFT_DXP_HOME%" ]; then
goto start
fi
==========================================================
的结构,对如小型的程序,可以直接把start的内容写到if与fi之间,但对于大一点的脚本,程序的可读性会比较差,是不是可以考虑用函数的方式实现?
 楼主| 发表于 2004-4-27 10:31:38 | 显示全部楼层
有点混乱了!这么说来,应该写成:
---------------
if [ -n "%SYSSOFT_DXP_HOME%" ]; then
set CLASSPATH="%SYSSOFT_DXP_HOME%/syssoftdxp.jar;%SYSSOFT_DXP_HOME%/DxpDemo.jar;%SYSSOFT_DXP_HOME%/lib/jdom.jar;%SYSSOFT_DXP_HOME%/lib/syssoftutil.jar;%SYSSOFT_DXP_HOME%/lib/classes12.jar;%SYSSOFT_DXP_HOME%/lib/xerces.jar;%SYSSOFT_DXP_HOME%/lib/jce1.2.1/jce1_2_1.jar;%SYSSOFT_DXP_HOME%/lib/jce1.2.1/sunjce_provider.jar;%SYSSOFT_DXP_HOME%/lib/mm.mysql-2.0.4-bin.jar"
java -classpath %CLASSPATH% com.syssoft.dxp.DxpRecieveData
fi

SET SYSSOFT_DXP_HOME=.

if [ -e "%SYSSOFT_DXP_HOME%/runserver.sh" ] && [ -x "%SYSSOFT_DXP_HOME%/runserver.sh" ]; then
set CLASSPATH="%SYSSOFT_DXP_HOME%/syssoftdxp.jar;%SYSSOFT_DXP_HOME%/DxpDemo.jar;%SYSSOFT_DXP_HOME%/lib/jdom.jar;%SYSSOFT_DXP_HOME%/lib/syssoftutil.jar;%SYSSOFT_DXP_HOME%/lib/classes12.jar;%SYSSOFT_DXP_HOME%/lib/xerces.jar;%SYSSOFT_DXP_HOME%/lib/jce1.2.1/jce1_2_1.jar;%SYSSOFT_DXP_HOME%/lib/jce1.2.1/sunjce_provider.jar;%SYSSOFT_DXP_HOME%/lib/mm.mysql-2.0.4-bin.jar"
java -classpath %CLASSPATH% com.syssoft.dxp.DxpRecieveData
fi
---------------
那么运行是?
exec "%SYSSOFT_DXP_HOME%/runserver.sh" start "$@"
????
发表于 2004-4-27 14:30:00 | 显示全部楼层
看了一下您的程序,试着改写了一个BASH的.
==========================================================
#!/bin/bash
# $Id: run.bat,v 1.0.0.0 2001/10/31 11:52:05 larryi Exp $
# Startup batch file for dxp System.

# This batch file written and tested under GNU/Linux i686
# Improvements to this file are welcome

if [ -n "$SYSSOFT_DXP_HOME" ]; then
    CLASSPATH="$SYSSOFT_DXP_HOME%syssoftdxp.jar;$SYSSOFT_DXP_HOME%DxpDemo.jar;$SYSSOFT_DXP_HOME%libjdom.jar;$SYSSOFT_DXP_HOME%libsyssoftutil.jar;$SYSSOFT_DXP_HOME%libclasses12.jar;$SYSSOFT_DXP_HOME%libxerces.jar;$SYSSOFT_DXP_HOME%libjce1.2.1jce1_2_1.jar;$SYSSOFT_DXP_HOME%libjce1.2.1sunjce_provider.jar"
    java -classpath $CLASSPATH% com.syssoft.dxp.DxpRecieveData
else
    if [ -f ./runserver.cmd ]; then
        CLASSPATH=".%syssoftdxp.jar;.%DxpDemo.jar;.%libjdom.jar;.%libsyssoftutil.jar;.%libclasses12.jar;.%libxerces.jar;.%libjce1.2.1jce1_2_1.jar;.%libjce1.2.1sunjce_provider.jar"
        java -classpath $CLASSPATH% com.syssoft.dxp.DxpRecieveData
    else
        echo "Unable to determine the value of SYSSOFT_DXP_HOME"
    fi
fi
==========================================================
具体的地方还要注意,比如linux下的项目分割符是':',而不是';'(另,不大明白CLASSPATH中的'%',可能也要改).自己慢慢调吧,希望能有所帮助.
 楼主| 发表于 2004-4-27 15:16:08 | 显示全部楼层
谢谢,我试一试!
这是我研究一中午写的!
呵呵,先试一试兄弟的!
---
#!/bin/sh
# -----------------------------------------------------------------------------
# Start Script for the TRS Server
# This batch file written and tested under Linux
# Improvements to this file are welcome
# $Id: runserver.sh,v 1.0 2004/04/07 11:33:38 patrickl Exp $
# -----------------------------------------------------------------------------
#export JAVA_HOME=/usr/local/j2sdk1.4.2_04
#export CLASSPATH=$JAVA_HOME/libJAVA_HOME/jre/lib
#export PATH=$PATHJAVA_HOME/binJAVA_HOME/jre/bin

set SYSSOFT_DXP_HOME=/usr/local/trs
export SYSSOFT_DXP_HOME

if [ -n "$SYSSOFT_DXP_HOME" ]; then
set classpath="$SYSSOFT_DXP_HOME"/syssoftdxp.jar;"$SYSSOFT_DXP_HOME"/DxpDemo.jar;"$SYSSOFT_DXP_HOME"/lib/jdom.jar;"$SYSSOFT_DXP_HOME"/lib/syssoftutil.jar;"$SYSSOFT_DXP_HOME"/lib/classes12.jar;"$SYSSOFT_DXP_HOME"/lib/xerces.jar;"$SYSSOFT_DXP_HOME"/lib/jce1.2.1/jce1_2_1.jar;"$SYSSOFT_DXP_HOME"/lib/jce1.2.1/sunjce_provider.jar;"$SYSSOFT_DXP_HOME"/lib/mysql-connector-java-3.0.11-stable-bin.jar"
export classpath
java -classpath "$classpath" com.syssoft.dxp.DxpRecieveData

fi

#SET SYSSOFT_DXP_HOME=.

if [ -e "$SYSSOFT_DXP_HOME"/runserver.sh ]; then
set classpath="$SYSSOFT_DXP_HOME"/syssoftdxp.jar;"$SYSSOFT_DXP_HOME"/DxpDemo.jar;"$SYSSOFT_DXP_HOME"/lib/jdom.jar;"$SYSSOFT_DXP_HOME"/lib/syssoftutil.jar;"$SYSSOFT_DXP_HOME"/lib/classes12.jar;"$SYSSOFT_DXP_HOME"/lib/xerces.jar;"$SYSSOFT_DXP_HOME"/lib/jce1.2.1/jce1_2_1.jar;"$SYSSOFT_DXP_HOME"/lib/jce1.2.1/sunjce_provider.jar;"$SYSSOFT_DXP_HOME"/lib/mysql-connector-java-3.0.11-stable-bin.jar"
export classpath
java -classpath "$classpath" com.syssoft.dxp.DxpRecieveData
fi

echo "运行成功!"
 楼主| 发表于 2004-4-27 15:30:10 | 显示全部楼层

我修改了一下,不过运行提示出错!

[PHP]#!/bin/bash
# $Id: run.bat,v 1.0.0.0 2001/10/31 11:52:05 larryi Exp $
# Startup batch file for dxp System.

# This batch file written and tested under GNU/Linux i686
# Improvements to this file are welcome

set SYSSOFT_DXP_HOME=/usr/local/trs
export SYSSOFT_DXP_HOME

if [ -n "$SYSSOFT_DXP_HOME" ]; then
CLASSPATH="$SYSSOFT_DXP_HOME%syssoftdxp.jar;$SYSSOFT_DXP_HOME%DxpDemo.jar;$SYSSOFT_DXP_HOME%libjdom.jar;$SYSSOFT_DXP_HOME%libsyssoftutil.jar;$SYSSOFT_DXP_HOME%libclasses12.jar;$SYSSOFT_DXP_HOME%libxerces.jar;$SYSSOFT_DXP_HOME%libjce1.2.1jce1_2_1.jar;$SYSSOFT_DXP_HOME%libjce1.2.1sunjce_provider.jar;"$SYSSOFT_DXP_HOME"%mysql-connector-java-3.0.11-stable-bin.jar"
java -classpath $CLASSPATH% com.syssoft.dxp.DxpRecieveData
else
if [ -f ./runserver.sh ]; then
CLASSPATH=".%syssoftdxp.jar;.%DxpDemo.jar;.%libjdom.jar;.%libsyssoftutil.jar;.%libclasses12.jar;.%libxerces.jar;.%libjce1.2.1jce1_2_1.jar;.%libjce1.2.1sunjce_provider.jar;.%mysql-connector-java-3.0.11-stable-bin.jar"
java -classpath $CLASSPATH% com.syssoft.dxp.DxpRecieveData
else
echo "Unable to determine the value of SYSSOFT_DXP_HOME"
fi
fi
[/PHP]



---------------------
[root@www root]# /usr/local/trs/runserver.sh
Unable to determine the value of SYSSOFT_DXP_HOME
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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