FTP接続に変数を渡すには? [コピー]

FTP接続に変数を渡すには? [コピー]

私はlftpFTPサーバーに接続してcd特定のディレクトリに移動し、そのディレクトリの場所を変数として保存するために使用していますREMOTE_DIRECTORY

フォルダ名にスペースがあるので、これはうまくいかないと確信しています。しかし、一重引用符と二重引用符を試しましたが、問題は解決されませんでした。何をもっと試すべきかわかりません。私が試したことは次のとおりです。

REMOTE_DIRECTORY="SRC Test Data"
export workdir=/home/ubuntu/tmp

lftp -u $USER,$PASS $HOST <<EOF
set ftp:ssl-protect-data true
set ftp:ssl-force true
set ssl:verify-certificate no
pwd 
cd $REMOTE_DIRECTORY
pwd
cd 'SRC Test Data'
pwd
ls -d > $workdir/src_list
quit
EOF

このスクリプトの出力は次のとおりです。

ftp://FTP_User-RW:[email protected]
Usage: cd remote-dir
ftp://FTP_User-RW:[email protected]
ftp://FTP_User-RW:[email protected]/SRC%20Test%20Data

したがって、コマンドにフォルダ名を明示的に入力した場合にのみ機能するようですcd。このために変数をどのように使用できますか?

答え1

変数が展開されると入力と同じです。

cd SRC Test Data

宇宙は爆発を起こす。

努力する:

 cd "$REMOTE_DIRECTORY"

また見てくださいスペースやその他の特殊文字が原因でシェルスクリプトが停止するのはなぜですか?

関連情報