【发布时间】:2020-06-01 09:24:52
【问题描述】:
我有一个文件 abc.out,我需要读取它并将内容导出到命名管道。我的shell脚本如下:
#!/bin/ksh -x
cd /home/robert/
if [[ -s abc.out ]]; then
sleep 2
for i in `cat abc.out`
do
mv -f $i ./abc_archive/x$i
print `pwd`/abc_archive/x$i > /home/robert/pipe_abc
sleep 1
done
fi
abc.out 文件内容如下:
2001010000
2001010001
2001010002
但是当我用命令sh abc.spt运行脚本时,错误提示如下:
mv: cannot stat ‘2001010000\r’: No such file or directory
如何解决这个问题,非常感谢!
【问题讨论】:
-
从输入文件中删除干扰
\r符号,即CR。 -
您的文件
abc.out有dos 行结尾。您应该不阅读带有for i in cat的行,有how to read a file line by line in bash 但同样适用于ksh。 -
我修改了脚本如下: if [[ -s bcfin.out ]];然后睡眠 2 而 IFS= 读取 -r 行 || [[ -n "$line" ]]; do mv -f $line ./bcf_archive/x$line print
pwd/bcf_archive/x$line > /home/cdr/robert/test_awsget_oracle/pipe_dvf sleep 1 done