在expect命令中存在文件

时间:2014-04-17 09:19:18

标签: linux unix expect

我是使用'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密钥对,但此时就停留了。

任何帮助都将不胜感激。

由于

2 个答案:

答案 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