LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Linux - Newbie (https://www.linuxquestions.org/questions/linux-newbie-8/)
-   -   Problem in exporting variable from bash script to expect script (https://www.linuxquestions.org/questions/linux-newbie-8/problem-in-exporting-variable-from-bash-script-to-expect-script-4175411161/)

uk.engr 06-13-2012 02:19 AM

Problem in exporting variable from bash script to expect script
 
Assalam o Alaikum.

I can easily export variable from bash to bash script but not from bash to expect script. Here are my scripts:
[root@Zohaib 04]# vim initiate_operation.sh
#!/bin/bash
gxip= 192.168.1.121
mkdir -p /tmp/logs_auto
cp -n Email_words.txt /tmp/
export gxip
expect auto.sh

[root@Zohaib 04]# vim auto.sh
#!/usr/bin/expect -f
echo "$gxip"
spawn ssh root@$gxip
expect "*password*" {
send "123\r"
}

[root@Zohaib 04]# . ./initiate_operation.sh

can't read "gxip": no such variable
while executing
"echo "$gxip" "
(file "auto.sh" line 8)

David the H. 06-13-2012 09:57 AM

Please use ***[code][/code] tags*** around your code and data, to preserve formatting and to improve readability. Please do not use quote tags, colors, or other fancy formatting.

Code:

gxip= 192.168.1.121
    ^

There can't be any spaces around the equals sign when setting a shell variable.

micropanther 06-13-2012 10:48 AM

Wow, that took a lot of digging.

Your answer is found in the TCL/TK Wiki

I hate redirection as an answer so here is what I got to work
  1. There is a space after the "=" in your gxip= 192. ... statement. No spaces allowed unless you put quotes around the string.
  2. echo is not an expect command. Use puts instead.
  3. The variable you want to use is a global environment variable in the environment of the bash shell. Tcl/Tk gets all the global environment vars into an array named env. You get to env by referencing $::env(name_of_the_global_env_var). So in your case you need to puts $::env(gxip). Similar fixes for other lines where gxip is used.

uk.engr 06-14-2012 01:57 AM

Thanks you so much. it works thanks a lot............................................


All times are GMT -5. The time now is 07:37 AM.