WindowsとLinuxで同じスクリプトを実行する場合の違い

WindowsとLinuxで同じスクリプトを実行する場合の違い

csvをxlsに変換するためにunoconvを実行するスクリプトを作成しました。

opensshクライアントを使用してスクリプトを含むサーバーに接続して実行しましたが、正常に動作しました。 (常に同じLinuxユーザー...)

しかし、他の人がWindows上でputtyを使用してスクリプトを実行すると、unoconvは失敗し、数字はテキストとしてレンダリングされます。

このスクリプトは常にLinuxサーバー上で実行されます。

違いは、一部のフィールドの前に「」(単一引用符)が付いていることです。たとえば、フィールドに次のものがあるとします。 0,80 Windowsでパテを使用して実行すると、次のようになります。'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

Linuxクライアントでスクリプトを実行している場合は「.」または、「、」を変換する必要があります。それ以外の場合は、単一引用符を前に付ける方法はありません。

おそらくより良い解決策があるかもしれませんが、今私はうまくいきます。

関連情報