首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >脚本生成的多个文件,只有最后一个可读

脚本生成的多个文件,只有最后一个可读
EN

Stack Overflow用户
提问于 2016-07-18 19:08:30
回答 1查看 40关注 0票数 5

在通过linux脚本生成文本文件时,我遇到了一个相当奇怪的问题。目前的情况是:

在我的语法磁盘站上,我正在执行sh-脚本。它使用只读的SQL-user访问本地mySQL数据库.有多个调用(每调用一行),每个调用都将接收到的输出写入不同位置的.csv文件。

.sh脚本如下所示:

代码语言:javascript
复制
/some/path/create_lists.sh

mysql --arguments < /path/to/script1.sql > /path/to/outfile1.csv
mysql --arguments < /path/to/script2.sql > /path/to/outfile2.csv
mysql --arguments < /path/to/script3.sql > /path/to/outfile3.csv
mysql --arguments < /path/to/script4.sql > /path/to/outfile4.csv

使用我的Windows,我想访问这些文件。

原则上,这已经很好了,但是只有最后创建的.csv文件才能被MS直接读取。在上面的示例中,outfile4.csv将是唯一可读的文件。在交换第3行和第4行时,outfile3.csv将是可读的。对于outfile4.csv,将创建一个名称完全相同的新文件,该文件不能被created打开。不过,Notepad++能够打开它。

在Windows资源管理器中如下所示:

代码语言:javascript
复制
\\myNAS\path\to

outfile4.csv    (working)
outfile4.csv    (not working)

怎么会有两个同名的文件呢?其中一个在工作而另一个却不起作用?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-18 19:17:39

在写这个问题的时候,我自己解决了,但我还是想把它发出去让别人看看.

这里是解决方案:--我使用Notepad++在Windows上编写了脚本。我将它们保存在NAS上的专用脚本文件夹中。由NAS运行,似乎是有效的,但有一个小细节导致了问题。载运返回.

当Windows使用回车返回(\r) (\r) a linefeed (\n)导致新行的\r\n时,基于unix的系统只使用linefeed (\n)E 215

通过在windows机器上编写脚本,我基本上是这样写的:

代码语言:javascript
复制
mysql --arguments < /path/to/script1.sql > /path/to/outfile1.csv\r\n
mysql --arguments < /path/to/script2.sql > /path/to/outfile2.csv\r\n
mysql --arguments < /path/to/script3.sql > /path/to/outfile3.csv\r\n
mysql --arguments < /path/to/script4.sql > /path/to/outfile4.csv

在linux上读取文件会导致:

代码语言:javascript
复制
mysql --arguments < /path/to/script1.sql > /path/to/outfile1.csv?\n
mysql --arguments < /path/to/script2.sql > /path/to/outfile2.csv?\n
mysql --arguments < /path/to/script3.sql > /path/to/outfile3.csv?\n
mysql --arguments < /path/to/script4.sql > /path/to/outfile4.csv

我通过SSH列出了包含文件夹的内容,这给了我这样的发现:

代码语言:javascript
复制
ls -alh /path/to

... outfile4.csv
... outfile4.csv?

我们就在这里!这就是为什么最后一个文件正在工作,而其他文件不工作的原因。这也是为什么可以有两个文件的“相同”名称。Windows根本不显示问题标记,这会造成许多混乱。

因此,如果有人有这个问题,他可能会偶然发现这条线,并节省一些时间。我想这是大多数人的常识,但我仍然是Linux的初学者,所以我不得不努力学习:)

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38444241

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档