Passing variable as an argument to another script


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Passing variable as an argument to another script
# 1  
Old 09-13-2013
Passing variable as an argument to another script

Hi,

I am trying to pass a variable as an argument to another script. While substitution of variable, I am facing a problem.
varaiable "a" value should be -b "FPT MAIN".
When we pass "a" to another script, we are expecing it to get substitue as ./test.sh -b "FPT MAIN". But, it is getting substituted as ./test.sh -b '"FPT' 'MAIN"', which is causing a problem.

Could someone suggest how to achieve this.


Code:
bash$ a=" -b \"FPT MAIN\" "; 
bash$ echo $a
-b "FPT MAIN"
bash$
bash$
bash$ a=" -b \"FPT MAIN\" "; echo $a ;set -x ; ./test.sh $a; set +x
-b "FPT MAIN"
+ ./test.sh -b '"FPT' 'MAIN"'
-b "FPT MAIN"
+ set +x
bash$
bash$
bash$ cat test.sh
#!/bin/bash
a=$@
echo $a

# 2  
Old 09-13-2013
Try
Code:
a=" -b \"FPT MAIN\" "; echo $a ;set -x ; ./test.sh "$a"; set +x

--ahamed
# 3  
Old 09-13-2013
Try this:
Code:
a=" -b \"FPT MAIN\" "; echo $a ;set -x ; eval ./test.sh $a; set +x

Andrew
# 4  
Old 09-13-2013
Quote:
Originally Posted by Manasa Pradeep
Hi,

I am trying to pass a variable as an argument to another script. While substitution of variable, I am facing a problem.
varaiable "a" value should be -b "FPT MAIN".
When we pass "a" to another script, we are expecing it to get substitue as ./test.sh -b "FPT MAIN". But, it is getting substituted as ./test.sh -b '"FPT' 'MAIN"', which is causing a problem.

Could someone suggest how to achieve this.


Code:
bash$ a=" -b \"FPT MAIN\" "; 
bash$ echo $a
-b "FPT MAIN"
bash$
bash$
bash$ a=" -b \"FPT MAIN\" "; echo $a ;set -x ; ./test.sh $a; set +x
-b "FPT MAIN"  # First output
+ ./test.sh -b '"FPT' 'MAIN"' # Why this causing problem? This is just showing how system handles it.
-b "FPT MAIN" # Second output - same as fist output. What is the difference.? 
+ set +x
bash$
bash$
bash$ cat test.sh
#!/bin/bash
a=$@
echo $a

# 5  
Old 09-13-2013
Thanks for the reply.

But with the solution, getting additional single codes ./test.sh ' -b "FPT MAIN" '. This single quote is creating problem.

Code:
bash$ a=" -b \"FPT MAIN\" "; echo $a ;set -x ; ./test.sh "$a"; set +x
-b "FPT MAIN"
+ ./test.sh ' -b "FPT MAIN" '
-b "FPT MAIN"
+ set +x
bash$

---------- Post updated at 03:03 AM ---------- Previous update was at 03:01 AM ----------

This is just an example I have put.

Actually, I am passing $a to some python script, which needs argument in format -b "FPT2 Main" -e 1node_ran_ref -v 371145 -R

Last edited by Franklin52; 09-13-2013 at 08:33 AM.. Reason: Please use code tags
# 6  
Old 09-13-2013
What is this problem being caused in the python script? Is it not able to parse it?

--ahamed
# 7  
Old 09-13-2013
Yep.
bcoz of single quote, ' -b "FPT MAIN" '
it is not able to recognise arguments.


Code:
a="-b \"FPT2 Main\" -e 1node_ran_ref -v 371145 -R" ; echo $a ; set -x ;/build/fpsdkroot_extra/bin/cicli.py getlastCompleteOKbuild "$a" ; set +x
-b "FPT2 Main" -e 1node_ran_ref -v 371145 -R
+ /build/fpsdkroot_extra/bin/cicli.py getlastCompleteOKbuild '-b "FPT2 Main" -e 1node_ran_ref -v 371145 -R'
NO SUCH BRANCH
ERROR: 11: Branch object not found
+ set +x

-bash-3.00$ /build/fpsdkroot_extra/bin/cicli.py getlastCompleteOKbuild  -b "FPT2 Main" -e 1node_ran_ref -v 371145 -R
1node_ran_ref:
R_FPT_2.4.1.1.WR.64.rh.1309031601.371145
DEPLOYMENT:
create_1node_ran_ref.sh

-bash-3.00$

Moderator's Comments:
Mod Comment Please use CODE tags (not ICODE tags) for multi-line code segments.

Last edited by Don Cragun; 09-13-2013 at 05:43 AM.. Reason: Change ICODE tags to CODE tags.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Passing awk variable argument to a script which is being called inside awk

consider the script below sh /opt/hqe/hqapi1-client-5.0.0/bin/hqapi.sh alert list --host=localhost --port=7443 --user=hqadmin --password=hqadmin --secure=true >/tmp/alerts.xml awk -F'' '{for(i=1;i<=NF;i++){ if($i=="Alert id") { if(id!="") if(dt!=""){ cmd="sh someScript.sh... (2 Replies)
Discussion started by: vivek d r
2 Replies

2. Shell Programming and Scripting

passing argument in script?

hi, I want to implement some function to perform following task if ; then $TEXT = "Data_0" else $TEXT = $1 fi if ; then $Lines = 45 else $Lines = $2 fi Kindly suggest, thanks (11 Replies)
Discussion started by: nrjrasaxena
11 Replies

3. Programming

Passing full path as argument when it contains variable strings

Hi, In directory "inoutfiles", I have folders fold0001, fold0002 and so on. Every folder has corresponding file file0001.txt, file0002.txt and so on. I want to perform a certain action on multiple files in one go. The cpp file is in the same directory as "inoutfiles". This is my code : ... (1 Reply)
Discussion started by: KidD312
1 Replies

4. UNIX for Advanced & Expert Users

Passing full path as argument when it contains variable strings

Hi, In directory "inoutfiles", I have folders fold0001, fold0002 and so on. Every folder has corresponding file file0001.txt, file0002.txt and so on. I want to perform a certain action on multiple files in one go. The cpp file is in the same directory as "inoutfiles". This is my code : ... (0 Replies)
Discussion started by: KidD312
0 Replies

5. Shell Programming and Scripting

Passing argument from Java to Shell script

Hi All, I want to pass array of argument from Java to a shell script.I can use process builder api and its exec() method to call the script,but the question is how to receive the parameter in the script. Thanks in advance ---------- Post updated at 10:00 PM ---------- Previous update was... (1 Reply)
Discussion started by: Abhijeet_Atti
1 Replies

6. Shell Programming and Scripting

Passing --usage as argument to awk script

I have the awk script below and things go wrong when I do awk -v dsrmx=25 -f ./checkSRDry.awk --usage I basically want to override the usual --usage and --help that awk gives. How do people usually handle this situation when you also want to supply your own usage and help concerning the... (2 Replies)
Discussion started by: kristinu
2 Replies

7. Shell Programming and Scripting

Need to run the script by argument passing

Hi All, I have a question regarding running this script by passing an argument, for example ./ShellParse.sh sun, how do i do that? So i want when i pass argument sun, it shouild execute things inside the for loop. I want to support some other platforms too, so there are more for loops to... (3 Replies)
Discussion started by: asirohi
3 Replies

8. Shell Programming and Scripting

Passing argument from one script to other

Dear All, I have one script which accepts database name and user_id from the user, i have another script that will unload the data from all the tables based on the user_id accepted by the user. How can i pass the user_id from the 1st script to the other. My OS is sun solaris. Thanks in... (3 Replies)
Discussion started by: lloydnwo
3 Replies

9. Shell Programming and Scripting

Passing the command line argument in a variable

Hi, I am new to unix. Is their a way to pass the output of the line below to a variable var1. ls -1t | head -1. I am trying something like var1=ls -1t | head -1, but I get error. Situation is: I get file everyday through FTP in my unix box. I have to write a script that picks up first... (1 Reply)
Discussion started by: rkumar28
1 Replies

10. UNIX for Dummies Questions & Answers

Passing argument to awk script

I am writing a shell script. Now i need to read in a string and send it to an awk file to compare and search for compatible record. I wrote it like tat: read serial | awk -f generate.awk data.dat p/s: the data file got 6 field. According to an expert, we can write it like tat: read... (1 Reply)
Discussion started by: AkumaTay
1 Replies
Login or Register to Ask a Question