Visit Our UNIX and Linux User Community


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.

Previous Thread | Next Thread
Test Your Knowledge in Computers #761
Difficulty: Medium
Every core of a multi-core CPU has a dedicated L1 cache and that cache is usually shared between the cores
True or False?

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

Featured Tech Videos