Выход SCP 0 при использовании неинициализированной переменной и невозможности копирования
Я пытаюсь проверить, не удалось ли передать файл с помощью SCP.
Я заметил, что если я использую неинициализированную переменную , я получаю выход 0, даже если SCP не работает.
Например, у меня есть пустая переменная uninitialized_var.
[root@centos_8_0 скрипты]# echo $uninitialized_var
Если я попытаюсь использовать его в команде SCP, команда, похоже, работает, возвращает выход 0, однако файл не копируется из-за несуществующего пути. Если я использую жесткий путь, которого не существует, он потерпит неудачу.
[root@centos_8_0 скрипты]# scp root@centos_8_1:/root/test/stack_test/file_20210302.csv $uninitialized_var/file_20210302.csv file_20210302.csv 100% 0 0,0 КБ/с 00:00
[root@centos_8_0 скрипты]# echo $? 0
Есть ли способ проверить, удалось ли копирование? В настоящее время я использую:
если [[ $? != 0 ]]; затем... однако, как я уже сказал, он возвращает 0.
Есть ли причина, по которой он возвращает 0?
1 ответ
Переменная будет расширена оболочкой и в данном случае будет добавлена к . Это означает, что ваш путь назначения просто/file_20210302.csv
. Вы выполняете это действие от имени пользователя root, у которого есть разрешение на запись./
. Файлы копируются и помещаются в ваш корневой каталог, ошибок не возникает, поэтому статус выхода равен 0.
Я проверил это с
scp user@example.com:/home/user/test_file $uninitialized_var/tmp/test_file
и это сработало как положено: файл поместился в /tmp и статус выхода 0.