TransWikia.com

Bash - Running a bash script from within a ksh script

Unix & Linux Asked by MO12 on January 16, 2021

I am on RHEL 6.7 and have a korn shell script that does check pre-reqs, prepares the system for rpm install’s (creating directories if they are not already that are required by the product), stops services, install rpm’s and starts services back up. All is working well until the rpm installation. 6 out of 10 rpm’s isntall and then the rpm install hangs.

Talking to product owner , they advised that they would prefer us to run the rpm installs in bash shell. So I did a small bash shell script, that installs, only rpm’s and it did went well.

now rather than changing my entire master script to bash, I am calling the bash script that installs rpm’s within my ksh script and it still hangs during rpm installation.

Any thoughts what might be causing this.

Here is the code when running rpm install within ksh

rpm --prefix $MOUNTINST -ivh $BIN/MQSeriesRuntime_6-8.0.0-0.x86_64.rpm 
$BIN/MQSeriesSDK_6-8.0.0-0.x86_64.rpm 
$BIN/MQSeriesServer_6-8.0.0-0.x86_64.rpm 
$BIN/MQSeriesClient_6-8.0.0-0.x86_64.rpm 
$BIN/MQSeriesSamples_6-8.0.0-0.x86_64.rpm 
$BIN/MQSeriesJava_6-8.0.0-0.x86_64.rpm 
$BIN/MQSeriesJRE_6-8.0.0-0.x86_64.rpm 
$BIN/MQSeriesMan_6-8.0.0-0.x86_64.rpm 
$BIN/MQSeriesExplorer_6-8.0.0-0.x86_64.rpm 
$BIN/MQSeriesAMS_6-8.0.0-0.x86_64.rpm 
$BIN/MQSeriesGSKit_6-8.0.0-0.x86_64.rpm 2>&1 | tee /tmp/MQinstV80.out

if_error $? "Installing MQSeries V8.0"

chown mqm:mqm /tmp/MQinstV80.out
if_error $? "Changing ownership of MQinst.out"

 Temporary workaround till IBM gets back with a fix
mkdir $MOUNTINST/logs
chown mqm:mqm $MOUNTINST/logs
chmod 755 $MOUNTINST/logs

And here is the code sample after making changes to run the bash script within ksh script, that was successful when running standalone

#rpm --prefix $MOUNTINST -ivh $BIN/MQSeriesRuntime_6-8.0.0-0.x86_64.rpm 
#$BIN/MQSeriesSDK_6-8.0.0-0.x86_64.rpm 
#$BIN/MQSeriesServer_6-8.0.0-0.x86_64.rpm 
#$BIN/MQSeriesClient_6-8.0.0-0.x86_64.rpm 
#$BIN/MQSeriesSamples_6-8.0.0-0.x86_64.rpm 
#$BIN/MQSeriesJava_6-8.0.0-0.x86_64.rpm 
#$BIN/MQSeriesJRE_6-8.0.0-0.x86_64.rpm 
#$BIN/MQSeriesMan_6-8.0.0-0.x86_64.rpm 
#$BIN/MQSeriesExplorer_6-8.0.0-0.x86_64.rpm 
#$BIN/MQSeriesAMS_6-8.0.0-0.x86_64.rpm 
#$BIN/MQSeriesGSKit_6-8.0.0-0.x86_64.rpm 2>&1 | tee /tmp/MQinstV80.out

/var/mqm/trace/WMQUNX8000.00/LINUX/MQV8000GA/6/x86_64/install.sh


#if_error $? "Installing MQSeries V8.0"

#chown mqm:mqm /tmp/MQinstV80.out
#if_error $? "Changing ownership of MQinst.out"

# Temporary workaround till IBM gets back with a fix
#mkdir $MOUNTINST/logs
#chown mqm:mqm $MOUNTINST/logs
#chmod 755 $MOUNTINST/logs

One Answer

I will assume a lot, your descriptions lack much needed information, and mislead otherwise.
I would assume that install.sh is the script you expect to run in bash, presented by you as:

a="/var/mqm/trace/WMQUNX8000.00/LINUX/MQV8000GA/6/x86_64/install.sh"

If that is true, call it as:

/path/to/bash "$a"

Of course, install.sh should have this code Again, (sigh)

  • assuming if_error could be implemented by the function if_error in code below.
  • $bin is the value of a bin folder like /usr/bin
  • You do not have this problem.
#!/bin/bash
# If bash is not installed in /bin/bash,
# use the correct path above.

bin="/usr/bin"
mountinst='some wild guess of its value'

if_error(){
    if [[ $1 != 0 ]]; then
        shift
        echo "$@"
    fi
}

rpm --prefix $mountinst -ivh $BIN/MQSeriesRuntime_6-8.0.0-0.x86_64.rpm 
$bin/MQSeriesSDK_6-8.0.0-0.x86_64.rpm 
$bin/MQSeriesServer_6-8.0.0-0.x86_64.rpm 
$bin/MQSeriesClient_6-8.0.0-0.x86_64.rpm 
$bin/MQSeriesSamples_6-8.0.0-0.x86_64.rpm 
$bin/MQSeriesJava_6-8.0.0-0.x86_64.rpm 
$bin/MQSeriesJRE_6-8.0.0-0.x86_64.rpm 
$bin/MQSeriesMan_6-8.0.0-0.x86_64.rpm 
$bin/MQSeriesExplorer_6-8.0.0-0.x86_64.rpm 
$bin/MQSeriesAMS_6-8.0.0-0.x86_64.rpm 
$bin/MQSeriesGSKit_6-8.0.0-0.x86_64.rpm 2>&1 | tee /tmp/MQinstV80.out

if_error "$?" "Installing MQSeries V8.0"

chown "mqm:mqm" "/tmp/MQinstV80.out"
if_error "$?" "Changing ownership of MQinst.out"

# Temporary workaround till IBM gets back with a fix
mkdir "$mountinst/logs"
chown "mqm:mqm" "$mountinst/logs"
chmod "755" "$mountinst/logs"

Answered by user79743 on January 16, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP