以下命令将一个命令发送到sftp
using 一行:
sftp -o PasswordAuthentication=no user@host" <<<"lcd /home"
Run Code Online (Sandbox Code Playgroud)
如何将多行发送到sftp
使用一行。有没有办法插入回车或其他东西来实现这一点,例如:
sftp -o PasswordAuthentication=no user@host" <<<"lcd /home\n cd /myhome\n get file"
Run Code Online (Sandbox Code Playgroud)
这个想法是不使用sftp -b
加载外部文件列表命令的选项。
man*_*ork 13
根据<<<
您使用的 here-string ( ) 语法,我猜您的 shell 是bash
,因此您还可以使用带有反斜杠转义字符 ( $''
) 的字符串:
sftp -o PasswordAuthentication=no user@host <<< $'lcd /home\n cd /myhome\n get file'
Run Code Online (Sandbox Code Playgroud)
便携式替代方案是here-document:
sftp -o PasswordAuthentication=no user@host <<END
lcd /home
cd /myhome
get file
END
Run Code Online (Sandbox Code Playgroud)
使用该-b/--batchfile
选项进行正确的错误处理:
printf '%s\n' 'lcd /home' 'cd /myhome' 'get file' | sftp -b - user@host
Run Code Online (Sandbox Code Playgroud)
是的,你可以使用echo -e
echo -e "lcd /home\ncd /myhome\nget file" | sftp user@host
Run Code Online (Sandbox Code Playgroud)