Expect 文件中的变量

发布于 2024-11-18 10:40:31 字数 415 浏览 2 评论 0原文

我有一个看起来像这样的期望文件。 来调用脚本。expect文件中是否有变量的概念?

expect myfile.exp

我使用“我希望能够发送 1、2、3 或 4”的值

expect -exact "> "
sleep .1
send -s -- "1\r"
expect -exact "> "
sleep .1
# This prompt can take values 1, 2, 3 or 4
send -s -- "1\r"
# I want to replace "1\r" above with one of the 4 possible values at runtime
expect -exact "> "
sleep .1
send -s -- "1\r"

I have an expect file that looks like this. I invoke the script using

expect myfile.exp

I want to be able to send a value of 1,2,3 or 4. Is there a notion of variable within the expect file?

expect -exact "> "
sleep .1
send -s -- "1\r"
expect -exact "> "
sleep .1
# This prompt can take values 1, 2, 3 or 4
send -s -- "1\r"
# I want to replace "1\r" above with one of the 4 possible values at runtime
expect -exact "> "
sleep .1
send -s -- "1\r"

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

指尖上的星空 2024-11-25 10:40:31

您希望这是互动的吗?那么脚本请求用户输入还是需要依赖于它收到的某些值?

请求用户输入:
http://my.safaribooksonline.com/book/operating-systems-and-server-administration/unix/9781565920903/handling-a-process-and-a-user/the_expect_user_command

Do you want this to be interactive? So that the script requests input from the user or does it need to be dependant on some value it receives?

Request user input:
http://my.safaribooksonline.com/book/operating-systems-and-server-administration/unix/9781565920903/handling-a-process-and-a-user/the_expect_user_command

幸福还没到 2024-11-25 10:40:31

解决方案是使用命令行参数

expect -f myfile.exp 2 3 1

这里 2 是传递的参数。 exp 文件中的参数处理如下

set var1 [lrange $argv 0 0]
set var2 [lrange $argv 1 1]
set var3 [lrange $argv 2 2]
expect -exact "> "
sleep .1
send -s -- "1\r"
expect -exact "> "
sleep .1
# This prompt can take values 1, 2, 3 or 4
# Original code 
# send -s -- "1\r"

# Modified code
send -s -- "${var3}\r"

expect -exact "> "
sleep .1
send -s -- "1\r"

Solution is to use command line arguments

expect -f myfile.exp 2 3 1

Here 2 is the argument being passed. The arguments are processed as follows in the exp file

set var1 [lrange $argv 0 0]
set var2 [lrange $argv 1 1]
set var3 [lrange $argv 2 2]
expect -exact "> "
sleep .1
send -s -- "1\r"
expect -exact "> "
sleep .1
# This prompt can take values 1, 2, 3 or 4
# Original code 
# send -s -- "1\r"

# Modified code
send -s -- "${var3}\r"

expect -exact "> "
sleep .1
send -s -- "1\r"
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文