下面的命令使用一行将一个命令发送给sftp
:
sftp -o PasswordAuthentication=no user@host" <<<"lcd /home"
如何使用一行将多行发送到sftp
。是否有一种方法可以插入回车或实现这一目的,例如:
sftp -o PasswordAuthentication=no user@host" <<<"lcd /home\n cd /myhome\n get file"
这样做的目的是不要在加载外部文件列表命令时使用sftp -b
选项。
发布于 2012-11-08 14:33:39
使用-b/--batchfile
选项进行正确的错误处理:
printf '%s\n' 'lcd /home' 'cd /myhome' 'get file' | sftp -b - user@host
发布于 2012-11-08 06:43:56
是的,你可以只使用echo -e
echo -e "lcd /home\ncd /myhome\nget file" | sftp user@host
发布于 2017-01-18 02:38:21
没有必要避免使用-b
选项来避免将批处理文件写入磁盘。使用过程替代,您可以动态创建批处理。
batch() {
echo lcd /home
echo cd /myhome
echo get file
}
sftp -b <(batch) -o PasswordAuthentication=no user@host
https://unix.stackexchange.com/questions/55190
复制