Я пытаюсь проверить, существует ли определенная строка в имени файла на хосте. Таким образом, только если определенный шаблон найден из команды grep, будет создан файл dummy.txt. Затем я хочу проверить, существует ли dummy.txt в качестве условия, и продолжить.
Но даже если dummy.txt создается, его не находит оператор if:
if {[file exists $fileName] }
и управление передается блоку else. Что может быть причиной? Есть ли более простой способ добиться того, что я пытаюсь сделать?
set Host [lindex $argv 0 ]
spawn ssh -o StrictHostKeyChecking=no userid@$Host
expect "*assword*"
send "password\n"
expect "+"
send "cd path/that/contains/filename\n"
expect "*$*"
send "pwd\n"
set fileName dummy.txt
send {grep '\[abc\]' filename | wc -l | { read line; [ "$line" != "0" ] && echo "$line"> dummy.txt; }}
send "\n"
expect "+"
send {grep 'xyz' filename | wc -l | { read line; [ "$line" != "0" ] && echo "$line"> dummy.txt; }}
send "\n"
expect "+"
send "chmod 777 dummy.txt\n"
if {[file exists $fileName] } {
send {printf "\nabc xyz already exists"}
send "\n"
expect "+"
send "ls -l\n"
expect "+"
send "rm dummy.txt\n"
expect "+"
send "ls -l\n"
expect "+"
send "exit\n"
} else {
send {printf "cannot find $fileName"}
send "\n"
expect "+"
send {printf "\n[abc]\nxyz\n" >> filename}
send "\n"
expect "+"
send "cat filename\n"
expect "+"
send "exit\n"
}