1

Я пытаюсь проверить, существует ли определенная строка в имени файла на хосте. Таким образом, только если определенный шаблон найден из команды 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"

    }

1 ответ1

1

if {[file exists $fileName] } проверяет , существует ли файл в локальной системе (тот , где expect работает), но условно созданный файл будет находиться на удаленном хосте (тот , что сценарий входит в с ssh если он существует.  Кроме того, filename является dummy , но условно созданным файлом является dummy.txt .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .