bashでscpを使用してリモートファイルをローカルシステムにコピーしようとすると、必要な
ファイル名を取得して変数に割り当てまし$lastModifiedFile
た
が、問題はファイル名にスペースが含まれていることです。
この変数をscpで使用するには、スペースをバックスラッシュでエスケープする必要があります。
この変数をフォーマットし、必要に応じて、つまりスペースに正しいエスケープ文字を挿入する簡単な方法はありますか?
#!/bin/bash
lastModifiedFile=$(sshpass -p 'passw0rd' ssh user@server 'ls -tr /path/output*| tail -n 1')
echo "$lastModifiedFile"
sshpass -p 'passw0rd' scp user@server:"$lastModifiedFile" /root/
これはスクリプト出力です。
[user@host ~]# ./script.sh
/path/outputSat Mar 09 151905 GMT 2013.html
scp: /path/outputSat: No such file or directory
scp: Mar: No such file or directory
scp: 09: No such file or directory
scp: 151905: No such file or directory
scp: GMT: No such file or directory
scp: 2013.html: No such file or directory
私は以下のようなもの、またはさらに簡単な解決策を探していますか?..
escapedFilename=""
for letter in $lastModifiedFile
if $letter == " "
$escapedFilename += "\ "
else
$escapedFilename += $letter