【问题标题】:Redirecting FTP OUTPUT to separate lines将 FTP 输出重定向到单独的行
【发布时间】:2016-03-02 16:02:45
【问题描述】:

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

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.

【问题讨论】:

标签: shell unix ftp


【解决方案1】:

常规:对命令使用$(),而不是反引号。使用小写的变量名。
不要将输出分配给变量并尝试同时重定向(如果需要,请使用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}"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-25
    • 2018-12-15
    相关资源
    最近更新 更多