Shell scripting with passing arguments


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Shell scripting with passing arguments
# 1  
Old 03-24-2015
Shell scripting with passing arguments

Hi All,

I am using the script for creating local queue and passing the arguments while running the script as below

Code:
n=0
while [ $n -lt $1 ]
do
e=`expr $n + 3`
echo 'DEFINE QL('$e') MAXDEPTH('$6') MAXMSGL('$7') DEFPSIST('$8') '$9'' | /apps/mqm_opt/bin/runmqsc $2
n=`expr $n + 1`
done

Running the script
Code:
./sample.sh 3 QueueManager1 Q1 Q2 Q3 5000 4194304 NO

3 - Number of queues to be created
QueueManager1 - name of the queue manger
Q1 - Queue 1 to be created
Q2 - Queue 2 to be created
Q3 - Queue 3 to be created
5000 - Maxdepth of queue
4194304 - Size of message in queue
NO - Queue persistence
<null> - Cluster

In the above highlighted, the value should be either $3, $4, $5 based on the condition from "for loop" but the script takes the queue name as 3,4,5 instead of Q1,Q2,Q3 respectively.

I am not sure how the variable should be passed inside "DEFINE QL()"

Can someone please help on this.

Thanks,
Anusha
# 2  
Old 03-24-2015
You need to quote properly:
Code:
n=0
while [ $n -lt $1 ] do
  e=`expr $n + 3`
  echo "DEFINE QL('$e') MAXDEPTH('$6') MAXMSGL('$7') DEFPSIST('$8') '$9'" | /apps/mqm_opt/bin/runmqsc $2
  n=`expr $n + 1`
done

# 3  
Old 03-24-2015
Hi,

I tried the same
Code:
echo "DEFINE QL('$e') MAXDEPTH('$6') MAXMSGL('$7') DEFPSIST('$8') '$9'" | /apps/mqm_opt/bin/runmqsc $2

Code:
./sample.sh 3 SDBXBRK2 Q1 Q2 Q3 5000 4194304 NO

Output is
Code:
"DEFINE QL('3') MAXDEPTH('5000') MAXMSGL('4194304') DEFPSIST('NO') ''
AMQ8405: Syntax error detected at or near end of command segment below

But the actual value should be
Q1 when n=0
Q2 when n=1
Q3 when n=3

Thanks,
Anusha
# 4  
Old 03-24-2015
You can import any queue definition exported by simple runmqsc < inputfile (as you probably know)

Export a working QM in file using saveqmgr, or on newer MQ version dmpmqcfg.

Make a template out of it, by substituting values you wish (like names and port numbers) with shell variables ($PORT, $QDEPTH or alike)

Use that template for any new definition, parse the template and substitute variables with new required (best to source a file with all the variables exported, can be populated with shell script) and generate new file which you will use with runmqsc (leaving the template unchanged in the process).

This way you will have :
A configuration file for each new QMGR, with definitions and everything, per execution.
Validation of job done (a runmqsc file used will always be there)
Ease of future administration and code change (a introduction of new functionality required will be a new $VAR in template file and a new export $VAR in configuration file - minor changes)

Hope that helps
Regards
Peasant.
# 5  
Old 03-24-2015
Ah, I see.

It is much easier to part the command line when the list of QLs is at the end of the argument list:

Code:
qm="${1}"
cluster="${2}"
maxdepth="${3}"
maxmsgl="${4}"
defpsist="${5}"

shift 5

for ql in "${@}"; do
  echo "DEFINE QL('$ql') MAXDEPTH('$maxdepth') MAXMSGL('$maxmsgl') DEFPSIST('$defpsist') '$cluster'" 
done \
| /apps/mqm_opt/bin/runmqsc $qm

The loop generates (replacing 'runmqsc' with 'cat'):
Code:
./mkql SDBXBRK2 '' 5000 4194304 NO Q1 Q2 Q3
DEFINE QL('Q1') MAXDEPTH('5000') MAXMSGL('4194304') DEFPSIST('NO') ''
DEFINE QL('Q2') MAXDEPTH('5000') MAXMSGL('4194304') DEFPSIST('NO') ''
DEFINE QL('Q3') MAXDEPTH('5000') MAXMSGL('4194304') DEFPSIST('NO') ''

# 6  
Old 03-24-2015
Thank you!! It worked fine...



Thanks,
Anusha
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Passing Arguments to shell script from file is not working as expected.

Hi All, I have below simple shell script in cloudera quick start vm cenos 6 which copy file from source to destination. # file_copy.sh source_dir = ${source_dir} target = ${target_dir} cp source_dir target and my parameter file is like below #parameter_file.txt source_dir =... (4 Replies)
Discussion started by: Narasimhasss
4 Replies

2. Shell Programming and Scripting

C shell script passing arguments problem.

I found something insteresting when I tested passing arguments into my scripts. My scripts is as below. % cat passarg.env #!/bin/csh echo "passarg: argv = $argv argv = $argv" passarg1.env $* % cat passarg1.env #!/bin/csh echo "passarg1: argv = $argv argvp=$argv" set str = "test... (5 Replies)
Discussion started by: bestard
5 Replies

3. UNIX for Beginners Questions & Answers

Beginner at bash scripting - need help with passing arguments

I at the moment, making a simple bash script, capable of setting up an workspace for me, so i don't have to do it manually.. Problem is though i can't seem to provide the bash script any argument, without running into my error checks, checking for input... Here is the code: #!/bin/bash... (7 Replies)
Discussion started by: kidi
7 Replies

4. Shell Programming and Scripting

Passing multiple arguments to a shell script

Hi Gurus, Need some help with the shell scripting here. #!/bin/ksh ps -ef | grep -i sample.ksh | grep -v grep > abc.txt if then echo "sample.ksh is executing" else echo "sample.ksh is not executing" fi (1 Reply)
Discussion started by: jayadanabalan
1 Replies

5. Shell Programming and Scripting

Problems passing shell arguments to perl

Semi-newbie, so flame throwers to 'singe-only', please. ;-) I have a large number of (say) .html files, where I'd like to do a recursive in-place search and replace a particular string. The following bit of perl works fine: perl -pi -e 's/oldstring/newstring/g' `find ./ -name *.html` ... (2 Replies)
Discussion started by: johnny_canucl
2 Replies

6. Programming

Passing arguments from java to script shell

Hello Please i want to pass parameter (the string s) to the shell script: Quote: String s="Hello"; Process process = Runtime.getRuntime().exec("sh script1.sh"); How can i do please? Thank you (0 Replies)
Discussion started by: chercheur857
0 Replies

7. Shell Programming and Scripting

Passing arguments from a bash shell script to a command

I'm pretty new to bash scripting and I've found myself writing things like this (and the same with even more nesting): if $CATEGORIES; then if $LABEL_SLOTS; then $pyth "$wd/texify_grammar.py" "$input" "$texfile" "--label-slots" "--categories" "$CATEGORY_LIST" ... (9 Replies)
Discussion started by: burbly
9 Replies

8. Shell Programming and Scripting

Passing Arguments in Shell Scripts

Hello everybody! First time posting here:) Right, I am trying to pass arguments in my shell scripts using $1, $2 and $3 etc using if else statement........ This is my shell script which is based on serching the google website #!/bin/sh wget -t1 -E -e robots=off - -awGet.log -T 200 -H... (47 Replies)
Discussion started by: kev_1234
47 Replies

9. Shell Programming and Scripting

passing runtime arguments to a shell script...

hi I am new to shell programming.....my question is while running one of my shell program it stops in between to accept input from the user and proceeds furthur after giving input....I want to know whether I can set this input through some files so that the shell acript reads the input from the... (10 Replies)
Discussion started by: santy
10 Replies

10. UNIX for Dummies Questions & Answers

passing arguments from shell to java

Hi: I have a script called runjava: The content --- search=$1 dpi=$2 prefix=$3 input=$4 output=$5 java -Djava.library.path=./lib/path/Lib -classpath .:lib/path/Lib/mylib.jar myclass $search $dpi $prefix $input $output How does myclass parse arguments --- String searchTerm =... (3 Replies)
Discussion started by: kenpeter
3 Replies
Login or Register to Ask a Question