gpt4 book ai didi

expect - 了解expect脚本shebang中 "-f"标志的用途

转载 作者:行者123 更新时间:2023-12-01 12:39:29 24 4
gpt4 key购买 nike

期望脚本的shebang通常是:

#!/usr/bin/expect -f

根据expect手册, -f标志仅在使用 #!符号,以便可以在命令行上提供其他参数。这是否意味着 #!/usr/bin/expect -f shebang,expect 将脚本文件中的所有其他代码作为命令文件处理,并允许用户在命令行上指定其他命令,例如 /usr/bin/custom-expect-script.exp -c "debug 0; log_file /tmp/expect_log_file.log" ?

最佳答案

-f标志命名从中读取命令的文件,即脚本。在交互方面,这似乎毫无意义。如果你说 expect script ,假设您的意思是 expect -f script反正。

事实上,没有理由使用 -f从命令行。仅提供它以便可以从 #! 使用。线为:

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

就像 -- , 当脚本开始时 -f行并且仅通过其名称调用(没有 expect ),它的行为就像您输入以下命令一样:
% expect -f script args

现在您可以使用诸如 -c 之类的 Expect 标志。他们将得到正确处理。自 -f script看起来像一面旗帜,Expect 继续寻找并找到 -c并将其解释为标志。
% 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 and $z"

-f flag 定义,脚本可以在没有 expect 的情况下执行从终端作为
 ./echo.exp -c "set debug 1" foo bar 17

否则, expect会抛出错误。

当然,缺点是如果您想将标志传递给您自己的脚本,则
还必须使用 -- .例如,假设您将自己的标志定义为 -e-ZZ :
% echo.exp -- -e -ZZ -c
-e-ZZ不是 Expect 已知的标志,但您仍然必须使用 -- 否则 Expect
会告诉您您使用了非法标志。
% echo.exp -e -zz -c
expect: illegal option -- e

来源: Exploring Expect

关于expect - 了解expect脚本shebang中 "-f"标志的用途,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26337682/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com