I am passing argument in expect
through command line in shell script
I tried this
#!/usr/bin/expect -f
set arg1 [lindex $argv 0]
spawn lockdis -p
expect "password:" {send "$arg1\r"}
expect "password:" {send "$arg1\r"}
expect "$ "
but it's not working. Please help me to figure it out.
Thanks
If you want to read from arguments, you can achieve this simply by
And print it
That script will print
You can use Debug mode
A better way might be this:
However, your method should work as well. Check that
arg1
is retrieved. For example, withsend_user "arg1: $arg1\n"
.I like the answer provided with this guide. It creates a parse argument process.
The above is just a snippet. It's important to read through the guide in full and add sufficient user argument checks.
note, sometimes argv 0 is the name of the script you are calling. so if you run it that way, argv 0 doesn't work,
for me I run "> expect script.exp password"
that makes argv 1 = password argv 0 = script.exp
Args with spaces are fine, assuming the arg you want is the first after the script name (
$0
is script name,$1
is first arg, etc.)Make sure you use
"$ARG"
NOT$ARG
as it wil NOT include the whitespace, but break them up into individual args. Do this in yourbash
script:Also, as the first answer states, use debug mode, (the
-d
flag) It will output yourargv
variables asexpect
sees them, should show you what is going on.