ожидать не принимать аргументы ssh while / for loop [duplicate]

Исключение нулевого указателя - это индикатор того, что вы используете объект, не инициализируя его.

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

public class Student {

    private int id;

    public int getId() {
        return this.id;
    }

    public setId(int newId) {
        this.id = newId;
    }
}

Приведенный ниже код дает вам исключение с нулевым указателем.

public class School {

    Student obj_Student;

    public School() {
        try {
            obj_Student.getId();
        }
        catch(Exception e) {
            System.out.println("Null Pointer ");
        }
    }
}

Поскольку вы используете Obj_Student, но вы забыли инициализировать его, как в правильном коде, показанном ниже:

public class School {

    Student obj_Student;

    public School() {
        try {
            obj_Student = new Student();
            obj_Student.setId(12);
            obj_Student.getId();
        }
        catch(Exception e) {
            System.out.println("Null Pointer ");
        }
    }
}
3
задан Ramakrishna 10 September 2014 в 07:48
поделиться

1 ответ

Попробуйте приведенный ниже сценарий. Изменения заключаются в том, что Transfer.sh завернут в bash.sh. и причина, по которой он ждет пароль, может быть вызвана тем, что вы ожидаете неправильный шаблон, попробуйте «Пароль» вместо «пароль» и после команды send, ожидайте для шаблона терминала, чтобы scp завершил

#!/bin/bash
while read p; do
echo $p
{
    /usr/bin/expect << EOF
    spawn scp $p user@192.168.4.151:/home/user/Desktop/
    expect "Password"
    send "123\r"
    expect "*#*"
EOF
}
done <List.txt
5
ответ дан glenn jackman 18 August 2018 в 14:12
поделиться
  • 1
    спасибо за комментарий ур, я пробовал код выше. Я получаю синтаксическую ошибку и предупреждение: здесь-документ в строке 4, разделенный на конец файла (требуется «EOF») Синтаксическая ошибка: неожиданный конец файла – Ramakrishna 10 September 2014 в 10:52
  • 2
    Проблема заключается в том, что при копировании вы должны удалить лишние пробелы в начале каждой строки, попробуйте эту команду & quot; sed -i 's / ^ * // g' filename & quot; над сценарием и перезапустить скрипт, извините за плохое форматирование – Ram 10 September 2014 в 11:02
  • 3
    Эй, я просто удалил echo $ p, его работа. Спасибо за ваш ответ. – Ramakrishna 10 September 2014 в 11:21
  • 4
    Можно ли удалить строку, которая соответствует $ p внутри цикла while. Потому что я хочу удалить имя файла из List.txt, как только файл будет передан на сервер. ??? – Ramakrishna 10 September 2014 в 11:49
  • 5
    Вы ссылаетесь на строку «spawn scp $ p user@192.168.4.151: / home / user / Desktop /»? – Ram 10 September 2014 в 12:35
Другие вопросы по тегам:

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