我已经在imapsync中写了大量传输的脚本:
#!/bin/sh
echo
{ while IFS=';' read u1 p1 u2 p2; do
echo "==== Starting transfer for $u2 ===="
imapsync \
--host1 "src.host.com" --user1 "$u1" --password1 "$p1" \
--noauthmd5 \
--sep1 "." --prefix1 "" \
--host2 "desc.host.com" --user2 "$u2" --password2 "$p2" \
--sep2 "." --prefix2 "" \
--folder "INBOX" \
> ./logs/"$u1".log
echo "==== Ended transfer for $u2 ===="
done ; } < cred.txt这就是cred.txt的样子
src@email.com;password!;dest@email.com;3kXxFQBm7u
(empty line)现在,当我尝试运行这个脚本时,我得到了:
==== Starting transfer for dest@email.com ====
2 BAD CR sent without LF
...propagated at /usr/bin/imapsync line 759.
==== Ended transfer for dest@email.com ====但是如果我统计输入第二个密码(代码如下所示)-它工作了,为什么?
#!/bin/sh
echo
{ while IFS=';' read u1 p1 u2 p2; do
echo "==== Starting transfer for $u2 ===="
imapsync \
--host1 "src.host.com" --user1 "$u1" --password1 "$p1" \
--noauthmd5 \
--sep1 "." --prefix1 "" \
--host2 "desc.host.com" --user2 "$u2" --password2 "3kXxFQBm7u" \
--sep2 "." --prefix2 "" \
--folder "INBOX" \
> ./logs/"$u1".log
echo "==== Ended transfer for $u2 ===="
done ; } < cred.txt发布于 2018-02-13 16:55:10
由于问题只出现在行尾的密码上,因此您的文件可能有CRLF换行符,因为它是在Windows系统上创建的。用来修复它
dos2unix cred.txt发布于 2018-02-13 17:21:20
如果您的系统中没有dos2unix,并且您也不是根用户,那么您可以使用以下命令来删除同一系统中的这些回车字符:
tr -d '\r' < Input_file > temp_file && mv temp_file Input_file
OR
awk '{gsub(/\r/,"")} 1' Input_file > temp_file && mv temp_file Input_file发布于 2018-02-14 19:31:54
在cred.txt中的每一行末尾添加一个额外的;,如下所示:
src@email.com;password!;dest@email.com;3kXxFQBm7u;https://stackoverflow.com/questions/48762721
复制相似问题