次のコマンドは、sftp
1行を使用してコマンドを送信します。
sftp -o PasswordAuthentication=no user@host" <<<"lcd /home"
sftp
1行を使用して複数行を送信する方法。これを達成するためにキャリッジリターンや何かを挿入する方法はありますか?たとえば、次のようになります。
sftp -o PasswordAuthentication=no user@host" <<<"lcd /home\n cd /myhome\n get file"
アイデアは、sftp -b
コマンドをリストする外部ファイルをロードするオプションを使用しないことです。
答え1
使用しているhere-string()構文から<<<
シェルがあると推測されるため、bash
バックスラッシュエスケープ文字でstring()を使用することもできます$''
。
sftp -o PasswordAuthentication=no user@host <<< $'lcd /home\n cd /myhome\n get file'
ポータブル代替はここに文書化されています。
sftp -o PasswordAuthentication=no user@host <<END
lcd /home
cd /myhome
get file
END
答え2
-b/--batchfile
適切なエラー処理のためにこのオプションを使用してください。
printf '%s\n' 'lcd /home' 'cd /myhome' 'get file' | sftp -b - user@host
答え3
はい、使用できます。echo -e
echo -e "lcd /home\ncd /myhome\nget file" | sftp user@host
答え4
Mybru、次のようにコマンドをパイプできます。
echo '
lcd /home
cd /myhome
get file
' | sftp -o PasswordAuthentication=no user@host