将FTP OUTPUT重定向到单独的行

时间:2016-03-02 16:02:45

标签: shell unix ftp

将FTP OUTPUT重定向到文件时,我将所有输出都放在一行中。我的要求是如果目录被更改或文件被列出,一切都应该在单独的行而不是单行。请指教。

FTPOUT=`ftp -inv << EOF
open $FTP_SERVER
user $USER_NAME $PASSWORD
cd $FILE_DIR
ascii
nlist ${fileName} $FILE_DIR_LIST
close
bye
EOF` > testfile.txt

当前输出样本:

 250 Directory successfully changed. 200 Switching to ASCII mode. 227 Entering Passive Mode (165,32,41,174,29,231). 150 Here comes the directory listing. 226 Directory send OK. 221 Goodbye.

预期产出:

250 Directory successfully changed. 

200 Switching to ASCII mode. 

227 Entering Passive Mode (165,32,41,174,29,231). 

150 Here comes the directory listing. 

226 Directory send OK. 

221 Goodbye.

1 个答案:

答案 0 :(得分:0)

常规:使用$()而不是后退来获取命令。使用小写变量名称 不要将输出分配给变量并尝试同时重定向(当需要时,请使用tee)。
在使用换行符回显变量时使用双引号(除非您知道不使用它们的充分理由,否则始终使用双引号)。
结果:

# You should change other variable names too
ftpout=$(ftp -inv << EOF
open ${FTP_SERVER}
user ${USER_NAME} ${PASSWORD}
cd ${FILE_DIR}
ascii
nlist ${fileName} ${FILE_DIR_LIST}
close
bye
EOF
)
echo "${ftpout}"