Вы не хотите останавливаться make
процесс; Вы хотите остановиться make
процесс и все его дочерние процессы. Я держал пари, делают, выполнялся рекурсивно.
Вы могли попробовать set -m
, затем используйте %1
вместо "$subpid"
.
set -m
включает "управление заданиями", которое выключено значением по умолчанию в сценариях. Я думаю, что это должно работать на Ваш вариант использования, хотя люди, кажется, думают, что это - плохая идея в целом.
Я имел честь слышать RMS (Ричард М. Столлман) и Линус Торвальдс. По собственным словам RMS, Линус сделал ядро и из электронной почты, которая сейчас хорошо известна на comp.unix.os newsgroup http://www.linux.com/news/software/linux-kernel/734956-linuss-famous-email должен был сделать его игрушечным проектом. Сходство между проектом ядра и проектом GNU utilities заключается в том, что оба используют производную лицензии GPL, монолитное ядро в основном является GPL2 с некоторыми частями в GPLv3, в то время как большинство проектов GNU строго GPL2.
К вопросу не относится - проект GNU имеет собственный проект ядра «Hurd», где пользователь никогда не должен касаться ядра ядра и просто касаться различных подсистем, чтобы делать все, что он/она хочет. Предполагается, что это повысит уровень безопасности и будет несколько более модульным и в настоящее время может быть реализовано с помощью виртуальной машины. Как только мы увидим это в реальных устройствах (возможно, навсегда), мы действительно узнаем, какова реальная производительность.
Я также не уверен, что Линус сделал (ядро 0.1) следует назвать OS. Обычно ОС имеет ядро, имея один или несколько компиляторов, кучу утилит и пользовательский интерфейс, который по существу является дистрибутивом GNU/Linux .
Только мои 2 пары.
-121--117281-
Параметр преобразования - размера
ImageMagic имеет аргумент
геометрии
с мощным синтаксисом (см. ниже) для выражения желаемого отношения старых и новых размеров изображения.
Чтобы изменить размер одного размера до явного значения и изменить размер другого размера на тот же коэффициент, сохранив соотношение сторон, можно исключить одно из значений в стандартном формате 950x700
, например, 950
для указания ширины или x700
для определения высоты.
convert in.jpg -resize x700 out.jpg
должны делать то, что вам нужно.
Для получения наилучшего результата самым большим фактором должно быть повторное сжатие изображения. При выводе изображения JPEG оно сжимается в несколько ином пути, чем раньше, даже с теми же опциями сжатия и тем же программным обеспечением (в противном случае это может быть большая разница).
Значения по умолчанию для -resize
действительно хороши, в отличие от многих других программных обеспечений. Лучше оставить их в покое.
Для точной настройки параметров, влияющих на шаг фильтра изменения размера, я не согласен с ответом @ peterph, я не думаю, что это поможет экспериментировать с опциями -filter
и -define filter: support =...
:
Вы можете сломать много вещей, в то время как трудно сказать, что изменилось.
Изменение размеров и фильтрация оптимальным путь включает в себя гораздо больше математики, чем можно было бы ожидать, поэтому, если у вас нет степени магистра математики, я бы посоветовал не изменять параметры изменения размера. (Но обратите внимание, что это может быть хорошей идеей в другом месте: я видел, как Adobe ошибается.)
Я предполагал, что речь идет о фотоснимках, снимках, сделанных физической камерой из реального мира.
Если это что-то другое, например рисование линий или 3D графическая сцена, «правильный» размер может быть не тем, что вам нужно; Для некоторых ситуаций могут быть специальные способы изменения размеров.
Синтаксис аргумента для -resize geometry
, из www.imagemagick.org :
size General description (actual behavior can vary for different options and settings)
scale% Height and width both scaled by specified percentage.
scale-x%xscale-y% Height and width individually scaled by specified percentages. (Only one % symbol needed.)
width Width given, height automagically selected to preserve aspect ratio.
xheight Height given, width automagically selected to preserve aspect ratio.
widthxheight Maximum values of height and width given, aspect ratio preserved.
widthxheight^ Minimum values of width and height given, aspect ratio preserved.
widthxheight! Width and height emphatically given, original aspect ratio ignored.
widthxheight> Shrinks an image with dimension(s) larger than the corresponding width and/or height argument(s).
widthxheight< Enlarges an image with dimension(s) smaller than the corresponding width and/or height argument(s).
area@ Resize image to have specified area in pixels. Aspect ratio is preserved.
-121--75937- Невозможно передать два аргумента с одним параметром с помощью getopts
.
Я рекомендую следующие альтернативы:
В этом случае getopts будет рассматривать их как один аргумент, но вы сможете разделить его позже. Можно даже поместить все аргументы в массив сразу:
# !/bin/bash
пока гетопты «: hr: l:» opt; сделать
случай $ opt в
r) эхо «Run Numbers - argument = $ OPTARG»
набор -f # disable glob
IFS = '' # разделение на символы пробела
array = ($ OPTARG);; # использовать оператор split + glb
l) эхо «Диапазон латентности - аргумент = $ OPTARG»;;
h) текст справки
graceful_exit;;
*) использование
clean_up
выход 1
esac
готово
echo «Количество аргументов: $ {# array [@]}»
echo -n «Аргументы:»
для i в «$ {array [@]}»; сделать
echo -n «$ {i}»,
готово
printf «\b\n »
Пример выполнения:
./script -r «123 456 789»
И вывод:
Run Numbers - аргумент = 123 456 789
Количество аргументов: 3
Аргументы: 123, 456, 789
./script -r 123 456 789
и замените IFS = «»
на IFS =,
в приведенном выше коде. Это имеет то преимущество, что позволяет пустые элементы.
Как указано в разделе комментариев, это решение выбирается некоторыми обычными программами, например lsblk -o NAME, FSTYPE, SIZE
.
-r
Несколько -r
, но каждый из них принимает только один аргумент:
./script -r 123 -r 456 -r 789
Затем аргументы добавляются в массив один за другим
массив + = («$ OPTARG»)
Это преимущество состоит в отсутствии ограничений на символы, которые могут содержать элементы.
Этот также используется некоторыми стандартными инструментами linux, например awk -v var1 = x -v var2 = y
.