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 클라이언트에서 스크립트를 실행하는 경우 "." 또는 ","를 변환해야 합니다. 그렇지 않으면 작은따옴표를 앞에 붙일 방법이 없습니다.

어쩌면 더 나은 해결책이 있을 수도 있지만 지금은 제게는 잘 작동합니다.

관련 정보