2016-11-14 3 views
1

Ich schrieb ein Skript, das alle auf einem Computer installierten Pakete auflistet und vergleicht es dann mit einer anderen Liste, die sich in /tmp/pacotes_iniciais.log befindet. Aus irgendeinem Grund ändert sich manchmal die Sprache der Ausgabe. Es wechselt zwischen Englisch und Portugiesisch.Die Sprache in der Ausgabe eines Shell-Skripts ändert sich

Das erste Mal, dass ich das Skript ausführen, gibt sie Mon (Montag), aber im zweiten Lauf ist das Datum Seg, die die Verkleinerungs für Segunda (Montag in Portugiesisch) ist.

Auch wenn in Englisch, werden die Wörter bei dem 14º Zeichen abgeschnitten.

Dies ist problematisch, weil der Vergleich insgesamt nicht validiert.

Im Folgenden ein Auszug aus dem Skript, das die Liste und führt den Vergleich erzeugt:

dpkg -l | awk '{print $2}' >> /tmp/lista_pacotes.log 

echo "\nPackages added until" $(date) "\n" >> /tmp/diferencas.log 

grep -F -x -v -f /tmp/pacotes_iniciais.log /tmp/lista_pacotes.log >> /tmp/diferencas.log 

Der Gehalt an /tmp/diferencas.log

Zweiten Lauf:

Packages added until Seg Nov 14 08:48:22 BRT 2016 

sl 

Ersten Lauf:

Packages added until Mon Nov 14 08:24:17 BRT 2016 

Name 
acpi-support-b 
apt-listchange 
aptitude-commo 
aptitude-doc-e 
bash-completio 
ca-certificate 
console-setup- 

[...] 

Was könnte das verursachen?

Hinweis: Ich führe dieses Skript auf einem 64-Bit-Debian Jessie OS und Zugriff auf dieses System über SSH.

+0

Verwenden Sie 'dpkg --get-selections | cut -f1' –

+0

@IporSircer was würde dieser Befehl tun? – EGS

+0

man dpkg: '--get-selections [paketname-muster ...] Liste der Paketauswahl abrufen und in stdout schreiben. Ohne ein Muster, nicht installierte Pakete (d. H. Diejenigen, die zuvor gereinigt wurden) werden nicht angezeigt –

Antwort

1

Von der Info-Seite für date:

Hervorrufen von ‚date‘ ohne FORMAT Argument entspricht es mit einem Standard-Format aufrufen, die auf dem ‚LC_TIME‘ locale Kategorie abhängt.

Beispiele

LC_TIME=en_US.UTF-8 date 
LC_TIME=ru_RU.UTF-8 date 

Beispielausgabe

Mon Nov 14 20:27:59 +07 2016 
Пн ноя 14 20:28:04 +07 2016 

Also das Verhalten, das Sie zu Ihrer lokalen Einstellungen aufgrund beschrieben, nämlich die LC_TIME Umgebungsvariable. Passen Sie sie irgendwo vor dem Ausführen des Skripts (auf dem Zielrechner!), Z.B .:

export LC_TIME=C 

Die anderen Probleme am ehesten durch die Ländereinstellungen als auch. Passen Sie den Rest der Gebietsschema-Umgebungsvariablen auf ähnliche Weise an. LANG und LC_NUMERIC Variablen sind besonders wichtig. Schauen Sie sich die Infoseite an: info bash LANG.

Verwandte Themen