2015-03-17 3 views
1

Может ли кто-нибудь помочь мне со следующим. Я думаю, это может быть из-за пробелов, но для жизни меня я не могу понять.Ожидать скрипта, если команда не будет запущена

Предполагается, что это простой скрипт, который будет перемещать файл в зависимости от его местоположения. Я использую ожидание, поскольку я хочу, чтобы он обрабатывался на моем NAS (через ssh), вместо того, чтобы отложить файл и снова вернуть его, чтобы переместить его между долями.

#!/usr/bin/expect -f 
# Script to organise downloaded file 

set FileDir [lindex $argv 0] 
set FileName [lindex $argv 1] 
set MiscDir "/media/Misc/Downloads" 
set DownDir "/media/Downloads" 

if { [string compare $FileDIR $DownDir] = 0 } { 

} elseif { [string compare $FileDIR $MiscDir] = 0 } { 
     spawn ssh *****@******* 
     expect "assword:" 
     send "********\r" 
     expect "$ " 
     send "mv ~/Misc/Downloads/$FileNAME '~/Misc/To Convert/$FileNAME'" 
     expect "$ " 
     send "exit\r" 
     expect eof' 
} 

Обновленный код:

#!/usr/bin/expect -f 
# Script to organise downloaded file 

set FileDir [lindex $argv 0] 
set FileName [lindex $argv 1] 
set MiscDir "/media/Misc/Downloads" 
set DownDir "/media/Downloads" 

if { [string compare $FileDir $DownDir] == 0 } { 

} elseif { [string compare $FileDir $MiscDir] == 0 } { 
     set OrigFile "\"/shares/Misc/Downloads/$FileName\"" 
     set MoveFile "\"/shares/Misc/To Convert/$FileName\"" 
     spawn ssh Admin[email protected] 
     expect "assword:" 
     send "xxxxxxxx\r" 
     expect "$ " 
     send "mv $OrigFile $MoveFile" 
     expect "$ " 
     send "exit\r" 
     expect eof' 
} 

Debug Output

spawn ssh [email protected] parent: waiting for sync byte parent: telling child to go ahead parent: now unsynchronized from child spawn: returns {5222} 

expect: does "" (spawn_id exp6) match glob pattern "assword:"? no [email protected]'s password: expect: does "[email protected]'s password: " (spawn_id exp6) match glob pattern "assword:"? yes expect: set expect_out(0,string) "assword:" expect: set expect_out(spawn_id) "exp6" expect: set expect_out(buffer) "[email protected]'s password:" send: sending "*******!\r" to { exp6 } 

expect: does " " (spawn_id exp6) match glob pattern "$ "? no 


expect: does " \r\n" (spawn_id exp6) match glob pattern "$ "? no [[email protected] ~]$ expect: does " \r\n[[email protected] ~]$ " (spawn_id exp6) match glob pattern "$ "? yes expect: set expect_out(0,string) "$ " expect: set expect_out(spawn_id) "exp6" expect: set expect_out(buffer) " \r\n[[email protected] ~]$ " send: sending "mv "/shares/Misc/Downloads/NOOBS_lite_v1_4.zip" "/shares/Misc/To Convert/NOOBS_lite_v1_4.zip"" to { exp6 } 

expect: does "" (spawn_id exp6) match glob pattern "$ "? no <ownloads/NOOBS_lite_v1_4.zip" "/shares/Misc/To Convert/NOOBS_lite_v1_4.zip"          expect: does "mv "/shares/Misc/Downloads/NOOBS_lite_v1_4.zip" "/shares/Misc/To Convert/NOOBS_lite_v1_4.zip\r<ownloads/NOOBS_lite_v1_4.zip" "/shares/Misc/To Convert/NOOBS_lite_v1_4.zip"       \u0008\u0008\u0008\u0008\u0008\u0008\u0008\u0008\u0008\u0008\u0008\u0008\u0008\u0008\u0008\u0008\u0008\u0008\u0008\u0008\u0008\u0008\u0008\u0008\u0008\u0008\u0008\u0008\u0008\u0008\u0008\u0008\u0008\u0008\u0008\u0008\u0008" (spawn_id exp6) match glob pattern "$ "? no 
+0

Было бы понятнее написать 'если {$ FileDir эк $ DownDir}' –

+0

принять также заботиться о ваших имен переменных: '$ FileDir' НЕ та же переменная, как '$ FileDIR' –

+0

Спасибо, Гленн. Я сделал, я немного обновил код, но, как указано ниже, он добавляет выход в конец имени файла. Во всяком случае, вокруг этого? – Tom

ответ

1

изменить ваши = к ==

= обычно для назначения (и не работать в tcl. ниже)

== является испытанием для equalness

+0

Большое спасибо - за следующую проблему. – Tom

+0

Фактически, Tcl вообще не имеет оператора '=' ** (назначение выполняется с помощью команды 'set'). См. Документацию '' expr' (http://tcl.tk/man/tcl8.6/TclCmd/expr.htm) –

+0

Я изменил большинство из них, но я не могу заставить его ждать завершения команда mv. Например, я пытаюсь сделать это с zip-файлом, и он добавляет 'exit' к расширению файла, когда он перемещает его – Tom

Смежные вопросы