Чистка nagios3
. Затем переустановите. Это будет, вероятно, работать.
apt-get purge nagios3
apt-get install nagios3
Чистка избавится от файлов конфигурации, которые система не удалила первоначально, и так думал, были все еще установлены. При чистке nagios3
не опция, затем это будет немного более сложно. Если это так, оставьте комментарий.
Вы могли сделать:
eval paste '<(sort -n ../data/file-'{A,B,C}'.dat)'
Или автоматизировать его как функцию
sort_paste() {
local n i cmd
n=1 cmd=paste
for i do
cmd="$cmd <(sort -n -- \"\${$n}\")"
n=$(($n + 1))
done
eval "$cmd"
}
sort_paste ../data/file-{A,B,C}.dat
(в некоторых ksh
реализации, необходимо заменить local
с typeset
)
Адаптироваться к любой произвольной команде, (и доказать это eval
может быть безопасным при надлежащем использовании) Вы могли сделать:
xproc() {
local n i cmd stage stage1 stage2 stage3
cmd= xcmd= stage=1 n=1
stage1='cmd="$cmd \"\${$n}\""'
stage2='xcmd="$xcmd \"\${$n}\""'
stage3='cmd="$cmd <($xcmd \"\${$n}\")"'
for i do
if [ -z "$i" ] && [ "$stage" -le 3 ]; then
stage=$(($stage + 1))
else
eval 'eval "$stage'"$stage\""
fi
n=$(($n + 1))
done
eval "$cmd"
}
xproc paste '' sort -n -- '' ../data/file-{A,B,C}/dat
Посмотрите здесь, почему eval
может быть опасно для использования. Как Вы заметите, это - очень мощный инструмент, но в то же время может нанести большой ущерб.
Следующий сценарий сделает то, что Вы хотите - безопасно.
sort_ps ()
{
local cmd="$1" p=()
shift;
for f in "$@"; do
p+=(<(sort -n "$f"));
done
"$cmd" "${p[@]}"
}
Править: Г-н Chazelas прав. Я зафиксировал свое решение, таким образом, можно теперь использовать sort_ps paste file1.txt file2.txt file2.txt ... fileN.txt
вместо этого. Спасибо Stephane для рассмотрения моего ответа.
Демонстрационный вывод:
rany$ sort_ps sprunge foo1.txt foo.txt
http://sprunge.us/EBZf?/dev/fd/62
http://sprunge.us/TQGC?/dev/fd/62
eval
опасно, когда передано неконтролируемые данные, которые не имеют место в решении, которое я дал. Вы забыли "-" и a""; Вы не сообщаете об ошибках вставки как статус выхода. Вы не объясняете a $temp_dir
потенциально существующий в среде. Это перестанет работать, если какой-либо аргумент будет содержать наклонные черты (как в вопросе OP), Вы не вставляете в порядке, который были даны файлы, Вы не используете замену процесса в качестве OP, который требуют: использует дополнительное временное пространство, виды, выполненные последовательно вместо одновременно, никакая очистка на SIGKILL.
– Stéphane Chazelas
23.04.2013, 18:36
"$cmd"
на самом деле выполняется, не прямо после каждого оператора. Когда sort_ps
реализован как функция оболочки как выше, sort_ps echo ../data/file-{A,B,C}.dat
дает /dev/fd/63 /dev/fd/62 /dev/fd/61
, указание они выживают до конца действительно. Однако, когда sort_ps
реализован как сценарий оболочки, он дает /dev/fd/63 /dev/fd/63 /dev/fd/63
, что означает, что каждая замена процесса завершается прямо после того, как она упоминается. Как странный! Я не могу найти официальную документацию об этом.
– musiphil
23.04.2013, 22:48
/dev/fd/63 /dev/fd/63 /dev/fd/63
, подразумевать, что замены процесса не выживают до последней команды. Так хранение замен процесса в массиве не работает.
– musiphil
15.12.2017, 22:58
eval
, но я вижу, что аргументы надежно обрабатываются выше. Единственное беспокойство, которое я вижу, является обработкой$cmd
: это пройдет обычные расширения. Это прекрасно когдаcmd
прикреплен кpaste
, но это может быть проблематично, когда Вы хотите обобщить это и принятьcmd
из командной строки, как вlocal i n=1 cmd="$1"; shift; ...
. – musiphil 23.04.2013, 22:02