Linux 在expect脚本中的特定输出之后执行if语句
如果我看到一个特定的输出,有没有办法执行if语句?例如,当控制台说“错误的解释器权限被拒绝”时,我想执行一个命令,如“dos2unix file\u name” 因此,逻辑如下:Linux 在expect脚本中的特定输出之后执行if语句,linux,expect,Linux,Expect,如果我看到一个特定的输出,有没有办法执行if语句?例如,当控制台说“错误的解释器权限被拒绝”时,我想执行一个命令,如“dos2unix file\u name” 因此,逻辑如下: if (output is "bad interpreter permission denied") { send dos2unix file_name } fi 这是一个expect脚本 编辑: 我可以在expect脚本中执行类似的操作吗 if (grep -cim1 '^M$' lrulo
if (output is "bad interpreter permission denied")
{
send dos2unix file_name
}
fi
这是一个expect脚本
编辑:
我可以在expect脚本中执行类似的操作吗
if (grep -cim1 '^M$' lruload.sh) -eq 1; then
send dos2unix filename
fi
这个逻辑/psuedo代码怎么样
export cmdText=`myCmd param1 param2 2>&1`
if ($cmdText is "bad interpreter permission denied")
{
send dos2unix file_name
}
fi
权限被拒绝的文本可能会转到stderr,而不是stdout,因此重定向2>&1将这两个文本集在一起,使测试变得简单。当您说执行命令时,我希望您的意思是在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'
发送“命令1”
期待“提示”
发送“命令2”
期待{
超时{puts“超时发生”}
“每个任务的翻译错误被拒绝”{
设置结果[exec dos2unix]
}
}
#如果需要使用三个应用程序,请进一步使用“发送”和“预期”
您有
result
变量来存储dos2unix
输出 这应该是bash还是expect?(另外,还有更好的方法来检测是否需要运行dos2unix
;为什么不直接测试呢?),这是一个预期的脚本。您是否将文件发送到某个服务器并运行它的过程自动化?这仍然很像一种情况,在这种情况下,遵循最佳实践可以从一开始就防止出现问题;然而,没有足够的上下文来更清楚地说明这一点。无论如何——如果您想要本机的expect
答案,您可能还应该添加tcl
标志,因为expect脚本是用tcl本机编写的。