我已经在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 ====
但如果我输入第二个密码staticaly(代码将如下所示) - 它正在工作,为什么?
#!/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
答案 0 :(得分:1)
由于问题仅在于行尾的密码,因此您的文件可能具有CRLF换行符,因为它是在Windows系统上创建的。用
修复它dos2unix cred.txt
答案 1 :(得分:0)
如果您的系统中没有dos2unix
且您也不是root用户,那么您也可以使用以下命令删除这些托架字符:
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
答案 2 :(得分:0)
添加额外的;在cred.txt的每一行的末尾,像这样:
src@email.com;password!;dest@email.com;3kXxFQBm7u;