LINUX.ORG.RU
ФорумAdmin

expect argv


0

1

здравствуйте, помогите пожалуйста разобраться с expect.

если у кого-нибудь есть свободная минута, помогите пожалуйста разобраться.

есть 2 скрипта, один работает, а другой нет, вроде бы все одинаково (по крайней мере я четкой разницы не наблюдаю)

работающий:

#!/usr/bin/expect -d
set prefix [lindex $argv 0]
set file_name [lindex $argv 1]
spawn scp "$file_name" root@192.168.1.1:$prefix/$file_name

вот его вывод:

expect version 5.44.1.15
argv[0] = /usr/bin/expect  argv[1] = -d  argv[2] = ./test-ssh2  argv[3] = hello  argv[4] = world  
set argc 2
set argv0 "./test-ssh2"
set argv "hello world"
executing commands from command file ./test-ssh2
spawn scp world root@192.168.1.1:hello/world

вот не работающий:

#!/bin/bash
/usr/bin/expect -d -f - $* <<END_EXPECT 
set prefix [lindex $argv 0]
set file_name [lindex $argv 1]
spawn scp "$file_name" root@192.168.1.1:$prefix/$file_name
..............
END_EXPECT

вот вывод:


expect version 5.44.1.15
argv[0] = /usr/bin/expect  argv[1] = -d  argv[2] = -f  argv[3] = -  argv[4] = hello  argv[5] = world  
set argc 2
set argv0 "/usr/bin/expect"
set argv "hello world"
executing commands from command file
spawn scp  root@192.168.1.1:/

подскажите пожалуйста, есть ли возможность зазставить его нормально работать из скрипта bash или придется во внешний файл выносить?

★★★

Внутри here-doc'ов интерполируются переменные, и вместо «$something» программа получает значение этой переменной.

Решение: экранируйте все $ символом «\».

AITap ★★★★★ ()

Можно попробовать коротко и заменить:

/usr/bin/expect -d -f - $* <<END_EXPECT 

на

usr/bin/expect -d -f - $* <<\END_EXPECT

И не заморачиваться содержимым.

io ★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.