我是使用'expect'命令的新手,我的要求是创建一个expect脚本来检查文件是否存在于特定位置。
我正在使用的脚本是
#!/usr/bin/expect
set PATH .ssh
set fname id_rsa
set timeout 2
spawn -noecho ls $PATH
expect { "id_rsa" { puts "found" }
timeout { puts "not found" } }
但是这个脚本不起作用。是否有任何方法可用于此要求,如File.Exists($ fname)?我需要根据文件的存在来决定下一个动作。就像文件退出一样,然后什么也不做,否则创建一个rsa密钥对,但此时就停留了。
任何帮助都将不胜感激。
由于
答案 0 :(得分:1)
在Tcl / expect中:
if {[file exists [file join $PATH id_rsa]]} {
puts found
} else {
puts "not found"
}
此外,您的PATH变量取决于您当前的目录。你应该使用
set PATH [file join $env(HOME) .ssh]
同样,当shell脚本编写时,永远不要使用变量PATH - 如果重新定义PATH,则无法找到任何程序。一般情况下,不要使用ALL_CAPS_VARNAMES,留下系统。
答案 1 :(得分:0)
您可以使用bash脚本中的if条件来检查文件是否存在。
if [ -e $PATH/id_rsa ]; then
echo "found"
else
echo "not found"
fi