Сортировка не работает изнутри скрипта bash - PullRequest
0 голосов
/ 02 октября 2018

Я использую bash-скрипт для извлечения данных в стиле CSV из базы данных, я сортирую и помещаю их во внешний файл.

Все кажется правильным, но sort ( sort (GNU coreutils) 8.26 ) не сортирует строки.

Это мой bash-скрипт:

#!/bin/bash
mongoexport --type=csv ${QUERY} | /usr/bin/sort > export.csv

Содержимое файла export.csv остается таким же, как и исходный вывод mongoexport - он все еще не отсортирован.

Смущает то, что когда я запускаю эту команду прямо из командной строки, sort выполняет то, что должен делать: сортирует строки.

Что я делаю не так?

1 Ответ

0 голосов
/ 02 октября 2018

Кажется, я трачу дни на эту проблему, но я наконец-то понял, что с этим делать.Ключ к решению - как всегда - журнал отладки.Конечно, sort предоставляет параметр командной строки с именем - debug .

Это приводит к этому простому и короткому уведомлению о sort перед возвратом несортированных данных:

sort: не удалось установить языковой стандарт;используя простое сравнение байтов

Решение состоит в том, чтобы установить переменную среды с именем LC_ALL (по некоторым причинам, которые я пока не знаю, в Ubuntu мне пришлось использовать LANG переменная env).Так что это будет содержание моего сценария экспорта:

#!/bin/bash
export LANG='en_GB.UTF-8'
export LC_ALL='en_US.UTF-8'
mongoexport --type=csv ${QUERY} | /usr/bin/sort > export.csv
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...