如果我看到特定的输出,有没有办法执行if语句?例如,当控制台说“拒绝错误的解释器权限”时,我想执行像“dos2unix file_name”这样的命令? 所以逻辑将如下所示,
if (output is "bad interpreter permission denied")
{
send dos2unix file_name
}
fi
这是一个期望剧本。
编辑:
大家好,我能在预期的剧本中做这样的事吗?
if (grep -cim1 '^M$' lruload.sh) -eq 1; then
send dos2unix filename
fi
答案 0 :(得分:0)
这个逻辑/伪代码怎么样?
export cmdText=`myCmd param1 param2 2>&1`
if ($cmdText is "bad interpreter permission denied")
{
send dos2unix file_name
}
fi
权限被拒绝的文本可能转到stderr,而不是stdout,因此重定向2>& 1将它们放在一起,使测试变得简单。
答案 1 :(得分:0)
当你说执行命令时,我希望你的意思是在shell中执行命令。您可以使用exec
命令来实现此目的。
我不确定你在哪里互动。我的意思是像telnet或ftp或bash。无论如何,在任何情况下,你都会发送命令并期待提示。
send "command 1"
expect "prompt"
send "command 2"
expect {
timeout { puts "timeout happened"}
"bad interpreter per mission denied" {
set result [exec dos2unix <filename>]
}
}
# if need to intact with three application, further use 'send' and 'expect'
您有result
变量来存储dos2unix
输出。