Tuesday 15 February 2011

Understand the purpose of "-f" flag in expect scripts shebang -



Understand the purpose of "-f" flag in expect scripts shebang -

shebang of expect scripts often:

#!/usr/bin/expect -f

according expect manual, -f flag useful when using #! notation, other arguments may supplied on command line. mean #!/usr/bin/expect -f shebang, expect handles other code in script-file command-file , allows user specify additional commands on command line, e.g. /usr/bin/custom-expect-script.exp -c "debug 0; log_file /tmp/expect_log_file.log"?

the -f flag names file read commands, i.e., script. interactively, may seem pointless. if expect script, assumed meant expect -f script anyway.

in fact, there no reason ever utilize -f command line. provided can used #! line as:

#!/usr/local/bin/expect -f

just --, when script starts out -f line , invoked name (without expect), behaves had entered next command:

% expect -f script args

now can utilize expect flags such -c , correctly handled. since -f script looks flag, expect continues looking , finds -c , interprets flag, too.

% echo.exp -c "set debug 1" foo bar 17

echo.exp

#!/usr/bin/expect -f if { $debug } { puts "debugging on" } else { puts "turned off debugging" } puts $argc lassign $argv x y z puts "$x, $y , $z"

with -f flag defined, script can executed without expect terminal

./echo.exp -c "set debug 1" foo bar 17

else, expect throw error.

the drawback, of course, if want pass flags own script, have utilize --. example, assume have own flag defined -e , -zz:

% echo.exp -- -e -zz -c

-e , -zz not flags known expect, must still utilize -- or else expect tell you have used illegal flag.

% echo.exp -e -zz -c expect: illegal alternative -- e

source : exploring expect

expect

No comments:

Post a Comment