回声输出未正确格式化

时间:2013-07-10 19:05:12

标签: linux bash echo expect

我正在尝试设置一个脚本来构建expect命令,以便根据我从其他地方提取的数据与该脚本内联运行。

我需要输出看起来像这样

send "get filename1.out.dat.pgp\n"
expect "sftp>"
send "get filename2.out.dat.pgp\n"
expect "sftp>"

我正在使用以下代码

while read filel
do
    echo 'send "get '${filel}'\n"' >> $ExpectCMMDSGET
    echo 'expect "sftp>"' >> $ExpectCMMDSGET
done < "$DirList"

但是当我把文件拿出来时我得到了

\n"d "get filename1.out.dat.pgp
expect "sftp>"
\n"d "get filename2.out.dat.pgp
expect "sftp>"

当我在VI中看到时,我得到了

send "get filename1.out.dat.pgp^M\n"
expect "sftp>"
send "get filename2.out.dat.pgp^M\n"
expect "sftp>"

我尝试使用sed在使用之前创建文件后删除^ M但它无法正常工作。

任何建议

1 个答案:

答案 0 :(得分:2)

听起来"$DirList"包含回车符。您可以使用sed -i "s/\r//g" file从文件中删除它们,最好是从原始输入中删除它们,但也可以从创建的文件中删除它们。