Batch to shell script conversion

Hi All,

I have a small tool which is currently configured in batch scripts only. But my need is to run it on Linux platform, so I have been trying to convert a batch script to shell script.
below is the batch script:

@echo off

IF "%1"== "" GOTO ARGERR


REM UPDATE THESE PROPERTIES TO MATCH YOUR BART INSTALLATION
REM -------------------------------------------------------
SET BART_HOME=D:\BARTNEW
SET BART_VER=1.5
REM -------------------------------------------------------

REM PROVIDE SYSTEM SPECIFIC INFORMATION
REM ------------------------------------
SET JRE_HOME="C:\java\jre6"
SET BROWSER_EXE="c:\program files\internet explorer\iexplore.exe"
REM ------------------------------------


REM -------------------------------------------------
REM ******* DO NOT MODIFY THE BELOW ENTRIES *********
REM -------------------------------------------------
SET JAVA="%JRE_HOME%\bin\java.exe"
SET BART_LIB_DIR=%BART_HOME%\%BART_VER%\lib
SET XALAN_LIB=%BART_LIB_DIR%\xalan.jar
SET COMMONS_LIB=%BART_LIB_DIR%\commons-collections-3.2.1.jar;%BART_LIB_DIR%\commons-configuration-1.6.jar;%BART_LIB_DIR%\commons-lang-2.4.jar;%BART_LIB_DIR%\commons-logging-1.1.1.jar;%BART_LIB_DIR%\commons-io-1.4.jar;%BART_LIB_DIR%\xmlunit-1.2.jar
SET BART_LIB=%BART_LIB_DIR%\bart.jar
SET BART_RULES_LIB=%BART_LIB_DIR%\bart-rules.jar
SET BART_CP_EXT=%XALAN_LIB%;%COMMONS_LIB%;%BART_LIB%;%BART_RULES_LIB%;
REM -------------------------------------------------
REM CALLOUT TO CUSTOM SCRIPT IF ONE EXISTS
IF EXIST %BART_LIB_DIR%\ext\setenv.bat CALL %BART_LIB_DIR%\ext\setenv.bat
REM -------------------------------------------------

IF NOT EXIST %JAVA% GOTO JAVAERR

%JAVA% -Djavax.xml.transform.TransformerFactory=org.apache.xalan.processor.TransformerFactoryImpl -Dbart.browser.path=%BROWSER_EXE% -classpath %BART_CP_EXT% com.sample.eai.tools.icg.bart.Bart %1
GOTO END

:ARGERR 
ECHO Usage : launch "config-filename". Eg. launch bart.cfg 
GOTO END

:JAVAERR
ECHO JRE_HOME not set correctly. Unable to locate java.exe
GOTO END

:END
set \p input="Run completed.Press Enter key to return to prompt.."

Basically this gets invoked from command line as
launch.cmd <config-file>

the above batch is saved in launch.cmd file.

Below is my effort to convert it into shell.

#!/bin/bash


# Script to convert Batch to Shell

#Set Paths for BART

export BART_HOME=/opt/BART
export BART_VER=1.5

echo "BART HOME VALUE:  $BART_HOME"
echo "BART VER VALUE: $BART_VER"

export JRE_HOME=/opt/jdk1.8.0_65/jre
echo $JRE_HOME

export JAVA="$JRE_HOME\bin\java"
export BART_LIB_DIR=$BART_HOME\$BART_VER\lib
export XALAN_LIB=$BART_LIB_DIR\xalan.jar
export COMMONS_LIB=$BART_LIB_DIR\commons-collections-3.2.1.jar;$BART_LIB_DIR\commons-configuration-1.6.jar;$BART_LIB_DIR\commons-lang-2.4.jar;$BART_LIB_DIR\commons-logging-1.1.1.jar;$BART_LIB_DIR\commons-io-1.4.jar;$BART_LIB_DIR\xmlunit-1.2.jar
export BART_LIB=$BART_LIB_DIR\bart.jar
export BART_RULES_LIB=$BART_LIB_DIR\bart-rules.jar
export BART_CP_EXT=$XALAN_LIB;$COMMONS_LIB;$BART_LIB;$BART_RULES_LIB;

$JAVA -Djavax.xml.transform.TransformerFactory=org.apache.xalan.processor.TransformerFactoryImpl -classpath $BART_CP_EXT com.sample.eai.tools.icg.bart.Bart


echo "JAVA VALUE: $JAVA"
echo "BART LIB VALUE:  $BART_LIB_DIR"
echo "XALAN_LIB VALUE: $XALAN_LIB"
echo "COMMONS_LIB VALUE: $COMMONS_LIB"
echo "BART_LIB VALUE: $BART_LIB"
echo "BART_RULES_LIB VALUE: $BART_RULES_LIB"
echo "BART_CP_EXT VALUE:  $BART_CP_EXT"


echo "#####BART RUNN STATUS#####"

This is half done as I was in the process to convert step by step. But getting the below error for jar files configurations.

./new.sh: line 20: /opt/BART$BART_VERlibcommons-configuration-1.6.jar: No such file or directory

I got stuck here only before reaching to the even last step.
Plus I'm struggling to understand and convert the below line.

:ARGERR 
ECHO Usage : launch "config-filename". Eg. launch bart.cfg 
GOTO END

Anybody help me with this one!!!

Thanks In Advance...

P.S Just a thot.. can ANT Target run the Batch script on Linux platform?

Pathname separator in unix is slash (/) not backslash (\)
Semicolon is a command separator and needs to be quoted when used in environment variables.

This code:

export JAVA="$JRE_HOME\bin\java"
export BART_LIB_DIR=$BART_HOME\$BART_VER\lib
export XALAN_LIB=$BART_LIB_DIR\xalan.jar
export COMMONS_LIB=$BART_LIB_DIR\commons-collections-3.2.1.jar;$BART_LIB_DIR\commons-configuration-1.6.jar;$BART_LIB_DIR\commons-lang-2.4.jar;$BART_LIB_DIR\commons-logging-1.1.1.jar;$BART_LIB_DIR\commons-io-1.4.jar;$BART_LIB_DIR\xmlunit-1.2.jar
export BART_LIB=$BART_LIB_DIR\bart.jar
export BART_RULES_LIB=$BART_LIB_DIR\bart-rules.jar
export BART_CP_EXT=$XALAN_LIB;$COMMONS_LIB;$BART_LIB;$BART_RULES_LIB;

Should be :

export JAVA="$JRE_HOME/bin/java"
export BART_LIB_DIR=$BART_HOME/$BART_VER/lib
export XALAN_LIB=$BART_LIB_DIR/xalan.jar
export COMMONS_LIB="$BART_LIB_DIR/commons-collections-3.2.1.jar;$BART_LIB_DIR/commons-configuration-1.6.jar;$BART_LIB_DIR/commons-lang-2.4.jar;$BART_LIB_DIR/commons-logging-1.1.1.jar;$BART_LIB_DIR/commons-io-1.4.jar;$BART_LIB_DIR/xmlunit-1.2.jar"
export BART_LIB=$BART_LIB_DIR/bart.jar
export BART_RULES_LIB=$BART_LIB_DIR/bart-rules.jar
export BART_CP_EXT="$XALAN_LIB;$COMMONS_LIB;$BART_LIB;$BART_RULES_LIB;"
:ARGERR 
ECHO Usage : launch "config-filename". Eg. launch bart.cfg 
GOTO END

:ARGERR is a destination for an earlier GOTO statement.

you would probably have something like this:

# Test exactly 1 argument passed to program
if [ $# -ne 1 ]
then
   echo "Usage : launch \"config <filename>\". Eg. launch bart.cfg"
   exit 1
fi

...

# Test JAVA exists and is executable
if [ -x "$JAVA" ]
then
    $JAVA -Djavax.xml.transform.TransformerFactory=org.apache.xalan.processor.TransformerFactoryImpl \
             -classpath $BART_CP_EXT com.sample.eai.tools.icg.bart.Bart
else
    echo JRE_HOME not set correctly. Unable to locate java.exe
fi

echo "JAVA VALUE: $JAVA"
echo "BART LIB VALUE:  $BART_LIB_DIR"
echo "XALAN_LIB VALUE: $XALAN_LIB"
echo "COMMONS_LIB VALUE: $COMMONS_LIB"
echo "BART_LIB VALUE: $BART_LIB"
echo "BART_RULES_LIB VALUE: $BART_RULES_LIB"
echo "BART_CP_EXT VALUE:  $BART_CP_EXT"


echo "#####BART RUNN STATUS#####"

@Chubler_XL thanks for your effort. Simple mistake by me not seeing slash.

Appreciate your efforts for answering!!