gpt4 book ai didi

linux - 如何在linuxexpect脚本中传递perl形式的参数?

转载 作者:太空宇宙 更新时间:2023-11-04 05:04:20 25 4
gpt4 key购买 nike

我必须在运行时传递一个路径,因为 abc.sh 脚本会提示输入它。我正在尝试按照期望脚本来完成此操作,

#!/usr/bin/expect -f
set force_conservative 0
if {$force_conservative} {
set send_slow {1 .1}
proc send {ignore arg} {
sleep .1
exp_send -s -- $arg
}
}
spawn abc.sh
match_max 100000
expect -exact "Please enter path : "
send -- $path
expect -exact "\r
expect eof

需要你的帮助 - 我如何在运行时调用这样传递 $path 值?

expect script.exp $path 

谢谢

最佳答案

期待答案

expect 脚本中使用 send -- $argv 因为 $argv 保存命令行参数。

举个例子,当管理员愚蠢地禁用公钥身份验证时,我有一个方便的期望脚本,它可以与 ssh 命令交互:

#!/usr/bin/expect -f
set timeout -1
set send_human {.6 .1 1.6 .1}
eval spawn $argv
match_max 100000
expect {
-re "LOGIN@(\[0-9A-Za-z_\\-\\.\]+)'s password: "
{ sleep 0.6 ; send -- "PASSWORD" ; sleep 0.1 }
interact

如果您只需要 $argv 的一部分,请使用诸如 [lrange $argv 0 $argc] 的结构

Perl 答案

使用system 'script.exp' $pathperl脚本调用script.exp,假设使用chmod等,大致就像DeVadder所说的没有引号。或者,如果您的 perl 脚本希望终止,请使用 exec。运行 man perlfunc 来了解 perl 命令。

关于linux - 如何在linuxexpect脚本中传递perl形式的参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21409464/

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