How can i get variable value inside << EOS?


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting How can i get variable value inside << EOS?
# 1  
Old 04-12-2018
Tools How can i get variable value inside << EOS?

Hi,

Below is my code:

Code:
user="wluser"
 password="welcom123"
 ip=$1
  
 expect << 'EOS'

spawn sftp  ${user}@${ip}:/
expect "Password:"
send "${pass}\n"
expect "sftp>"
send "get *date.csv\n"
expect "sftp>"
send "bye\n"
EOS

I am not able to get the value of user, pass and ip variables inside the << 'EOS'

Can you please suggest how can I get the values of them inside << EOS spawn sftp ${user}@${ip}:/
?
# 2  
Old 04-12-2018
try loosing single quote in 'EOS' -> EOS
This User Gave Thanks to vgersh99 For This Post:
# 3  
Old 04-13-2018
You are refering to a Tcl variable user, which does not exist.

Then, you are using a (non-exported) shell variable user. Since it is not exported, no subprocess could see it.

Solution: Define an environment variable (which you can do by exporting a shell variable).

You didn't specify which shell you are using, so I'm assuming Posix shell:

Code:
EXPECT_USER=wluser
export EXPECT_USER

In your Tcl script, you can then access it as $::env(EXPECT_USER)

Note that it is strongly recommended to use all-uppercase for environment variables.
# 4  
Old 04-13-2018
@rovf, passing environment variables is an interesting alternative, but is not needed here because the expect script is prepared in the shell.
In detail, the shell substitutes the shell variables by their values, writes the result to the here document, and then passes it to the expect program as stdin.
# 5  
Old 04-13-2018
Quote:
Originally Posted by MadeInGermany
@rovf, passing environment variables is an interesting alternative, but is not needed here because the expect script is prepared in the shell.
In detail, the shell substitutes the shell variables by their values, writes the result to the here document, and then passes it to the expect program as stdin.
Good point. However, this approach is dangerous, Imagine the effect if someone decides to change the password to
Code:
[error HaHaHa]

or some even nastier string. I would really avoid shell interpolation into a Tcl program unless I can be absolutely sure that the interpolated code does not ruin by Tcl code.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

To print value for a $variable inside a $variable or file

Hi guys, I have a file "abc.dat" in below format: FILE_PATH||||$F_PATH TABLE_LIST||||a|b|c SYST_NM||||${SRC_SYST} Now I am trying to read the above file and want to print the value for above dollar variables F_PATH and SRC_SYST. The problem is it's reading the dollar variables as... (5 Replies)
Discussion started by: abcabc1103
5 Replies

2. Shell Programming and Scripting

How to use variable inside array?

I tried to use variable inside an array variable, but its not working as expected.:wall: ENV1=123 ENV1=789 ENV1=120 ENV2=567 if then name=ENV1 echo "${name}" echo "${name}" echo "${name}" else name=ENV1 echo "${name}" fi Output: ./val.sh 1 123 (2 Replies)
Discussion started by: Jayavinoth
2 Replies

3. Shell Programming and Scripting

Resolve variable inside another variable

Hello Everyone, I am trying to resolve a variable inside another variable.Let me go straight to the example. Input: Query=$Table_1 Join $Table_2 (Query itself is a variable here) Now for two different cases I am assigning different values to Table_1 and Table_2 Case 1:... (14 Replies)
Discussion started by: vinay4889
14 Replies

4. Shell Programming and Scripting

evaluating a variable inside a variable

Hi there, i think im getting myself a little confused and need some help :wall: I am reading in a bunch of variables to my script from an external file and need to validate that a value has been set for each so if you can imagine, the user is required to pass in 4 values... (3 Replies)
Discussion started by: rethink
3 Replies

5. Shell Programming and Scripting

Not able to store command inside a shell variable, and run the variable

Hi, I am trying to do the following thing var='date' $var Above command substitutes date for and in turn runs the date command and i am getting the todays date value. I am trying to do the same thing as following, but facing some problems, unique_host_pro="sed -e ' /#/d'... (3 Replies)
Discussion started by: gvinayagam
3 Replies

6. Shell Programming and Scripting

variable inside variable inside loop headache

Hi Gurus I have a file called /tmp/CMDB which looks like this serial: 0623AN1208 hostname: server1 model: x4100 assetID: 1234 I am writing a for loop that will go through this file line by line creating a variable of itself. Using the first iteration of the loop (i.e. the first line) as... (6 Replies)
Discussion started by: hcclnoodles
6 Replies

7. Shell Programming and Scripting

passing a variable inside another variable.

Any help would be great. I know this is a dumb way of doing this, but I would like to know if there is a solution doing it this way. I'm very new at this and I'd like to learn more. Thanks! :D:D count=0 while ; do echo "enter your name" read name_$count let count=count+1 done ... (2 Replies)
Discussion started by: reconflux
2 Replies

8. UNIX for Dummies Questions & Answers

passing a variable inside a variable to a function

I would like to know how to pass a variable inside a variable to a function. sample code below -------------- for x in 1 9 do check_null $C$x ##call function to check if the value is null if then echo "line number:$var_cnt,... (2 Replies)
Discussion started by: KingVikram
2 Replies

9. Shell Programming and Scripting

How to replace variable inside the variable

hi sir, i need your help for this script inside /rnmucdr/ednms05/ken/xMNBDF045_Script.sql content variable like this select * from invoice where bill_date=$BILLDATE and startNum=$STARTPARTNNUM and total_partn=$TOTALPARTN if i just paste this replace with the $SCRIPT it works great,if... (31 Replies)
Discussion started by: mani_um
31 Replies

10. Shell Programming and Scripting

ksh: A part of variable A's name is inside of variable B, how to update A?

This is what I tried: vara=${varb}_count (( vara += 1 )) Thanks for help (4 Replies)
Discussion started by: pa3be
4 Replies
Login or Register to Ask a Question