1. 大家都知道windows,linux换行格式不同.
当程序出现某些问题的时候,应该检查下上述差异。
但是今天,我才发现linux和Mac的换行格式也不同?!!!
我彻底反应过来——这些年我是被Mac的换行格式坑的有多少次了!!
2. 由于公司的技术支持用的是Mac,每次出了问题需要我这边处理时,都会给一个csv文档。
比如,我需要遍历这个csv文档,对其中每一行的url使用curl或者程序访问一次。
上一次就用java写了一个parse data的程序,读取文档循环处理。
但是怪异的是,以前的文档可以运行,当天的文档看着也是一样,怎么都运行不正确(结束了也没报错)。
我郁闷的不行,一抹一样的程序,怎么过了几天就不能用了?!!
3. 今天收到技术支持的csv文档,不打算打开java程序了,直接用shell下的curl吧!
于是写了下面的函数:
function posturls(){
urlfile=/e/FromG/QQFiles/postback0901.txt
while read urlstr
do
echo -e curl "$urlstr"
echo $urlstr
done < $urlfile
}
4. 写成echo是为了先测试一次。然后运行上面的函数,发现shell下怎么什么都没显示?!
我又对函数改来改去,难道变量名有影响(shell函数中的变量是全局变量),难道文件名是中文不行(原始文件是中文名)。。。
我的函数都改的不成样子了,shell下的echo依然啥都不显示!!!
我要被逼疯了!!
大家都要吃饭了,我这儿这点儿事还没处理完?!!
5. 我被逼得没有办法,不得不打开之前的java程序,赶紧处理了开饭再说!!
6. 于是java程序也遇到一样的问题,运行没结果啊!!!
7. 还好java程序里有上一次的文件名,于是打开两个文件对比下,立马反应过来,今天的csv又是技术支持传来的Mac格式的,必须转成Windows格式才能在java的parse data程序使用啊,必须转成windows或者linux才能在shell下使用啊!!
原来Mac的格式也不是linux的格式啊!!
我自己被坑的满腹苦水无从倾诉!!
csv在notepad++中转成windows,linux档案格式,果然shell下出结果 了!!
8. 档案格式
linux : LF
windows : CRLF