Calling another Script from Command Line in UNIX

Hi all,

I am having problem in understanding the following line of code ..

/home/rmsbatch/autoscript/autorms.ksh dc_load_main.ksh -q belk_dc_load_tran_data.seq

What's being done here ? what does "-q" means ? What does ".seq" file means in unix " belk_dc_load_tran_data.seq"

Please elaborate :confused:

Welcome to UNIX.COM

.seq

File extensions DO NOT have meaning necessarily to a UNIX OS. This is a Windows thing primarily. Some windows-like Linux desktops can be set up to associate certain applications with a file extension. .mp3, for example, may be associated with whatever media application you have.

Programmers often attach meaningful extensions so that someone seeing the file knows what is in it: foo.dat script.sh script1.ksh. Those extensions do not make or break the function of the file like they do in Windows. In Windows if you rename a file like foo.xlsx - an Excel file - to foo.junk then the Windows OS will not open the file using Excel automatically. You get warning messages when you rename files on Windows because of this very issue. Not on UNIX.

-q

Is a command line parameter, an option. You have to read the script to understand what effect -q has on the logic of the shell script. Nobody here can tell you what it does, anything we said would be a pure guess - if we got it right it would be an accident.

1 Like

Thanks very much... This is the code

#!/bin/ksh
################################################################################
# Description : Execute RMS Jobs with Error Reporting
# 
################################################################################
. /home/rmsbatch/.profile
set -x
LOG=/logs/IBM/AutoLogs
CMNLOG=$LOG/BatchStatus_`date +"%y%m%d`.txt

if [ "${1}" == "prepost" ] || [ "${1}" == "bprepost" ]
then
        exec > ${LOG}/Auto_${1}_${3}.log 2>&1
else
        exec > ${LOG}/Auto_${1}.log 2>&1
fi



function Error_Log
{
# translate "\n" to "^" below
v1=$(echo -n $1 | tr "\n" "^")
v2=$(echo -n $2 | tr "\n" "^")
echo $(hostname)"|"$(basename $CMD $PARAM3)"|"$(date +%m/%d/%y)"|"$(date +%H:%M:%S)"|"$v1"|"$v2 |grep "Failed"
if [[ $? -eq 0 ]]
then
echo $(hostname)"|"$(basename $CMD $PARAM3)"|"$(date +%m/%d/%y)"|"$(date +%H:%M:%S)"|"$v1"|"$v2 | mail -s "RMS Batch Failed in PROD" rms_app_support@belk.com,bandrest@in.ibm.com,vanarsda@us.ibm.com,wgwinslo@us.ibm.com
fi
echo $(hostname)"|"$(basename $CMD $PARAM3)"|"$(date +%m/%d/%y)"|"$(date +%H:%M:%S)"|"$v1"|"$v2 >> $CMNLOG

}




function RunBatch
{
set -x
                echo "Running the Batch or Script"
                echo "Command" $CMD
                if [[ $check -ne 1 ]]
                then
                        ls $MMBIN/$CMD

                        if [ $? == 0 ] || [ $uRC -eq 0 ]
                        then
                                 echo "------ Running the Command ------"
                                 Error_Log "$(basename $CMD $PARAM3) Started"
                 if [ "${CMD}" == "prepost" ] || [ "${CMD}" == "bprepost" ]
                 then
                    ${MMBIN}/${CMD} $PARAM1 $PARAM3 $PARAM4 $PARAM5
                    echo $?| read VResult
                 else
                    cd $MMBIN
                    $SHOME/batch_wrapper.ksh ${CMD} $PARAM1 $PARAM3 $PARAM4 $PARAM5
                    echo $?| read VResult
                 fi 
                 if [ $VResult -eq 0 ]
                 then
                    Error_Log "$(basename $CMD $PARAM3) Batch Completed Successfully"
                    VResult=0
                    return $VResult
                 else
                    cat $MMHOME/error/err.${CMD}*.`date +"%b_%d"`|tail -1|grep error    
                    echo $error|read Error
                    echo `$SHOME/batch_wrapper.ksh ${CMD} $PARAM1 $PARAM3 $PARAM4 $PARAM5`|read Error1
                    Error_Log "$(basename $CMD $PARAM3) Failed with - $Error Error1"     
                    return $VResult
                 fi


                        else
                                 echo " Command not found in the Directory "
                                 Error_Log "$(basename $CMD $PARAM3) Failed for Command Not Found"
                                 VResult=99
                 return $VResult
                        fi
                else
                        echo "------ Running the Command ------"
                        Error_Log "$(basename $CMD $PARAM3) Started"
                        $MMHOME/external/scripts/$CMD.ksh $PARAM1 $PARAM3 $PARAM4 $PARAM5 $PARAM6 $PARAM7
                        echo $?|read Result
                        VResult=$Result
                        if [ $VResult -eq 0 ]
            then
                Error_Log "$(basename $CMD $PARAM3)  Batch Completed Successfully"
                return $VResult
            else
                Error_Log "$(basename $CMD $PARAM3) Failed" 
                return $VResult
            fi
                fi

}


if [[ $# -gt 0 ]]
then
        echo $1|grep ksh
        if [[ $? -ne 0 ]]
        then
                CMD=$1
        else
                echo $1|awk -F"." '{print $1}'|read CMD
                check=1
        fi
        LOGIN=$UP
        PARAM1=$2
        PARAM3=$3
        PARAM4=$4
        PARAM5=$5
        PARAM6=$6
        PARAM7=$7

        MMBIN=$MMHOME/oracle/proc/bin
    SHOME=/home/rmsbatch/autoscript
        echo " Shell Started the Command :" ${CMD}
        echo " Parameters Passed are     :" $*
        echo " MM Home Directory         :" $MMHOME


    RunBatch


else
        echo "##############################################################################################################################"
        echo "# Not Enough Parameter Passed Or Usage of Parameter is not Proper"
        echo "# value to be Passed to the Current Shell is : " $#
        echo "# Command being executed is : " $CMD
        echo "# Usage of current command is given below "
        echo ""
        echo "" `$MMHOME/oracle/proc/bin/$1`
        echo "##############################################################################################################################"
        return 99
fi

What do you see/think you do with it?

The parameters given in the command line are available to the script as $1 , $2 , $3 etc. relative to their position. I could make a wild guess, but you need to follow where they are used or passed on to decide that.

Often -q would be set as a flag for a Query, to make the script not log/display anything (quiet) or to signal a quit at a certain point, but it has no official meaning, so it depends what you have done with it beyond this script, which seems to be your standard schedule runner.

Follow through where it's used (more than one place) and let us know where you are getting stuck.

Robin

Robin