с локального компьютера на удаленный сервер

Командная строка процесса состоит из элементов параметра argv системного вызова execve . Этот параметр представляет собой массив, пронумерованный от 0, где элементы с номерами от 1 до n являются аргументами, передаваемыми при вызове команды, а элемент 0 выбирается оболочкой или другой программой, которая вызывает вызов execve . Обычно элемент 0 - это строка, используемая для обозначения команды.

Линии Шебанга обрабатываются ядром. Ядро вставляет аргумент 0, который представляет собой путь, указанный после #! магический префикс. Итак, если вы запустите /root/user/test.sh с одним аргументом foo из startproc , то startproc создаст ] вызов execve с двумя аргументами 0 = /root/user/test.sh , 1 = foo . Когда /root/user/test.sh начинается с / bin / bash , ядро ​​видит shebang в /root/user/test.sh и перезаписывает список аргументов должен быть 0 = / bin / bash , 1 = /root/user/test.sh , 2 = foo .

Если строка shebang имеет вид #! / Bin / env bash , тогда ядро ​​вставляет два элемента в список аргументов: программу и аргумент. (Linux здесь ограничен одним аргументом.) Таким образом, в этом случае вызов преобразуется в 0 = / bin / env , 1 = bash , 2 = / root /user/test.sh, 3 = foo .Программа env выполняет свою работу и выдает новый системный вызов execve с 0 = bash (соблюдая соглашение о том, что аргумент 0 - это путь, используемый для обозначения команды ), 1 = /root/user/test.sh , 2 = foo .

Во всех случаях /root/user/test.sh будет первым аргументом процесса.

1
04.09.2018, 20:16
2 ответа

Вы забыли добавить $перед именем переменных, поэтому они не расширяются до правильных значений, которые вы установили.

попробуй

scp "$somepath/${file}.zip" "$ftp_user"@"$ftp_server":upload/
2
27.01.2020, 23:18

scpиспользует протокол SSH для передачи файлов, поэтому ему требуется учетная запись SSH.

Похоже, вам нужно подключиться к серверу через FTP, поэтому вы должны использовать один из многих фтп клиенты.

Мне всегда больше всего нравился lftp .

2
27.01.2020, 23:18

Теги

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