Да, bash
арифметическое расширение одолжено от ksh
, и это было зарегистрированным путем в ksh
с 80-х.
Отметьте однако, это в расширении арифметики POSIX как в $((x * 2))
, поведение является неуказанным (POSIX) если $x
содержит десятичную числовую константу (как в, 2
и -2
в порядке, но пустая строка или 1+1
не), что означает, что Вы не можете сделать то предположение в POSIX sh
сценарии.
Также остерегайтесь (в bash
, ksh
, zsh
по крайней мере):
$ echo $((2*$foo-2)) # actually $((2*-2))
-4
$ echo $((2*foo-2)) # actually $((2*0-2))
-2
К сожалению, вам, вероятно, придется переписать munpack, чтобы добавить возможность распаковки нескольких файлов. согласно README, который шел с исходным кодом v1.5, «[t] здесь должно быть ровно одно сообщение на файл. Munpack не может обрабатывать несколько сообщений в одном файле, чтобы правильно декодировать вещи, он должен знать, когда одно сообщение заканчивается, а следующее один начинается ".
Я не знаю, насколько сложным будет это переписывание, так как я сам не смотрел исходник; Я совершенно счастлив разделить файлы (используйте GAWK или PERL или что-то в этом роде) по границам.
Я знаю, что приду на эту вечеринку немного поздно, поэтому этот ответ предназначен для будущих посетителей.:munpack-1.6
был выпущен для Unix и Windows в трех версиях (vanilla, a
иb
).
В системах Linux имя соответствующего файла менеджера пакетов может содержать строку 1.6-2
. Если это так, то эти версии также поддерживают переключатель -t
, который лучше справляется с извлечением вложений. Большая проблема здесь в том, что эта функция почти никогда не документируется и не видна при выполнении munpack -?
.
Во всяком случае, в моих системах CentOS -7 я всегда использую команду munpack -tf <filename>
.