Попробуйте следующее (обратите внимание, что ваши переменные оболочки ДОЛЖНЫ быть целыми числами):
awk -v C1="$ColumnNo1" -v C2="$ColumnNo2" -v C3="$ColumnNo3" -v C4="$ColumnNo4" -F'|' '
{ a1[$C1]++; a2[$C2]++; a3[$C3]++; a4[$C4]++}
END {
printf "Non-unique entries in column %d\n", C1
for (key in a1) {
if (a1[key] > 1) print key
}
printf "Non-unique entries in column %d\n", C2
for (key in a2) {
if (a2[key] > 1) print key
}
printf "Non-unique entries in column %d\n", C3
for (key in a3) {
if (a3[key] > 1) print key
}
printf "Non-unique entries in column %d\n", C4
for (key in a4) {
if (a4[key] > 1) print key
}}' <myfile.csv
Начнем с того, что использование debconf в отдельной программе кажется неправильным. Цитирую man debconf-devel
, раздел OTHER SCRIPTS:
Вы также можете использовать debconf в других, автономных программах. Здесь следует обратить внимание на то. что debconf не предназначен и не должен использоваться в качестве реестра. В конце концов, это Unix и программы настраиваются файлами в /etc, а не какой-то туманной базой данных debconf. (которая в любом случае является лишь кэшем и может быть снесена). Поэтому хорошо подумайте, прежде чем использовать debconf в отдельной программе.
Эта же страница руководства также помогает решить вашу проблему в предыдущем разделе (СПРАВОЧНИК ПОСТИНСТА):
Если ваш постинст запускает демон, убедитесь, что вы сказали debconf остановиться в конце, поскольку в противном случае debconf может немного запутаться в том, когда ваш postinst завершен.
То есть, перед запуском вашего демона (даже если он не использует сам debconf) выдайте db_stop
.
Итак, я наконец нашел проблему и опубликую ее на случай, если она кому-то пригодится в будущем.
Как я уже сказал, я пытался запустить службу из сценария postinst
, и сказал, что служба пыталась использовать debconfig
для получения некоторых параметров конфигурации, но произошла ошибка с debconf
, поскольку один раз уже был запущен экземпляр (хотя вся конфигурация была сделана в файле config
, а не в postinst
).
Проблема заключалась в том, что во время выполнения сценария postinst
был активный интерфейс debconf
, в то время как я не использовал debconf
. Я, однако, прокомментировал строку, загружающую confmodue
:
# . /usr/share/debconf/confmodule
Очевидно, dpkg-reconfigure
(и я полагаю, dpkg
тоже) считают, что ] confmodule
загружается, если они соответствуют строке «confmodule» в файлах ( config
, postinst
и prerm
). Итак, хотя я не загружал модуль confmodule эффективно, dpkg-reconfigure не выпускал интерфейс, и поэтому служба не могла инициировать другой экземпляр debconf
. Решением было просто удалить эту строку.