Создание tar-файла в указанном каталоге в сценарии оболочки

Это не то, что вы хотите:

set FILEPATH1 $1

Tcl (и expect )не используют стиль оболочки -$1, $2,...для доступа к аргументам командной строки. Вы хотите использовать глобальный список $argv:

set FILEPATH1 [lindex $argv 0]

Кроме того, ваш призыв к возрождению неверен. shбудет искать файл с именем «scp $FILEPATH1 $USER@$HOST :/destination/files». Вам не нужна оболочка для создания SCP:

spawn scp $FILEPATH1 $USER@$HOST:/destination/files

Откуда берутся USER и HOST? Являются ли они переменными среды? Если да:

spawn scp $FILEPATH1 $env(USER)@$env(HOST):/destination/files

И вы не ждете фактического завершения передачи перед завершением работы вашего скрипта. Сделай это:

expect password:
send "$pass\r"
set timeout -1
expect eof

Я предполагаю, что пароль запрашивается только один раз. Если вам нужно ввести его несколько раз, то

expect {
    password: {
        send "$pass\r"
        set timeout -1
        exp_continue
    }
    eof
}
0
06.10.2020, 01:13
1 ответ

Укажите путь к месту хранения нового архива, например. грамм. tar cvf "${dir_path}"/new_name.tar "$file_dir_name" -C "$dir_path".

Это предполагает, что каталог, соответствующий file_dir_name, существует в dir_path.

0
18.03.2021, 22:59

Теги

Похожие вопросы