Выход 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.

Другие вопросы по тегам