在 Windows 和 Linux 上运行相同脚本的区别

在 Windows 和 Linux 上运行相同脚本的区别

我编写了一个运行 unoconv 的脚本,将 csv 转换为 xls。

我使用 openssh 客户端连接到脚本所在的服务器来运行它,并且工作正常。 (始终是同一个 Linux 用户...)

但是,当其他人在 Windows 中使用 putty 运行该脚本时,unoconv 会失败,将数字呈现为文本。

该脚本始终在 Linux 服务器上运行。

不同之处在于某些字段前面带有“'”(单引号)。例如,假设一个字段有: 0,80 当在 Windows 上使用 putty 运行时,它会产生'0,80 unoconv 版本是

unoconv 0.7 Written by Dag Wieers <[email protected]> Homepage at http://dag.wieers.com/home-made/unoconv/

platform posix/linux2 python 2.6.6 (r266:84292, Jul 23 2015, 15:22:56)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-11)] LibreOffice 4.2.8.2

造成这种差异的原因是什么?

答案1

我已经找到原因了:

早些时候,我的脚本被命令 sed 替换为每个“。”和 ”,”

因为它是我们使用的小数分隔符。

我发现 unoconv 巧妙地管理了这个问题:

https://wiki.openoffice.org/wiki/Documentation/DevGuide/Spreadsheets/Filter_Options

我找到了一个解决方法:

echo  "Se esta conectando desde Windows o Linux (físico)?. Elija el SO por favor. Escriba 'Windows' o 'Linux'."

read OS


if [[ $OS = Linux ]];then
   sed -i 's/\./,/g' ${ARCHIVOINFO}.csv
fi

我需要转换“.” por "," 如果从 Linux 客户端运行脚本,否则无法预先添加单引号。

也许有更好的解决方案,但现在对我来说效果很好。

相关内容