Vra

Die gebruik van dieselfde soort command met dieselfde insette lewer verskillende resultate op verskillende masjiene. Hoe kan ek dit regmaak?

Was dit nuttig?

Oplossing

Die man-bladsy op OS X sê:

  

******* WAARSKUWING ******* Die land wat deur die omgewing beïnvloed sorteervolgorde. Stel LC_ALL = C te kry   die tradisionele soort sodat inheemse byte waardes gebruik.

wat dinge kan verduidelik.

As 'n paar van jou stelsels het geen land steun, sou hulle die standaard om daardie land (C), so sal jy nie het om dit te stel op daardie. As jy 'n paar wat locales ondersteun en wil dieselfde gedrag, stel LC_ALL=C op daardie stelsels. Dit sou die weg na soveel stelsels te hê as ek weet doen dit op dieselfde manier.

As jy nie enige land-minder stelsels het, net om seker te maak hulle land deel sal waarskynlik genoeg wees nie.

Vir meer kanoniese inligting, sien die Die Enkellopend UNIX ®-spesifikasie, weergawe 2 beskrywing van land , omgewing veranderlikes , setlocale () en die beskrywing van die soort (1) nut.

Ander wenke

Dit kan die gevolg van land verskille wees:

$ echo 'CO2_
CO_' | env LC_ALL=C sort
CO2_
CO_


$ echo 'CO2_
CO_' | env LC_ALL=en_US sort
CO_
CO2_

die LC_ALL omgewing veranderlike om dieselfde waarde opstel moet die probleem op te los.

Dit is waarskynlik te wyte aan verskillende instellings van die land omgewing veranderlikes . sort sal hierdie instellings gebruik om te bepaal hoe om stringe te vergelyk. Deur die oprigting van hierdie omgewing veranderlikes die manier waarop jy wil voordat hy sort, moet jy in staat wees om dit te dwing om op te tree in 'n spesifieke manier.

Vir meer as wat jy ooit wou weet oor sort, lees die spesifikasie van sort in die Enkellopend Unix spesifikasie v3 . Dit verklaar

  

Vergelykings [...] kom tot stand met behulp van die samestelling volgorde van die huidige land.

IOW, hoe sort vorme is afhanklik van die land (taal) instellings van die omgewing wat die script loop onder.

Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top