Если ваш рабочий процесс поддерживает это, вы можете отправить пробную версию make
, прежде чем запускать ее для обновления файлов:
-q, --question
«Режим вопросов». Не запускайте никаких команд и ничего не печатайте; просто возвращает нулевой статус выхода, если указанные цели уже обновлены, иначе - ненулевое значение.
(Я несколько удивлен, что это не часть поведения - recon
.)
Это пример замены шаблона в расширение параметра оболочки:${parameter/pattern/replacement}
расширяет ${parameter}
, заменяя первый экземпляр pattern
на replacement
. В контексте такого шаблона #
является специальным :, он привязывает шаблон к началу параметра. Конечным результатом всего этого является расширение всех значений в массиве my_array
, добавление -
к каждому (путем замены пустого шаблона в начале каждого параметра ).
Да, это замена шаблона в расширении параметров оболочки на:
${parameter/pattern/replacement}
Но если первым символом после первого /
является либо /
, либо #
, либо %
, он имеет особое значение all
(, повторенное ), start
и end
.
с:
$ str='one_#two_two_three_one'
Один экземпляр /
заменит первый экземпляр. Первый экземплярone
:
$ echo "${str/one/x-x}"
x-x_#two_two_three_one
Или первый экземплярtwo
:
$ echo "${str/two/x-x}"
one_#x-x_two_three_one
Экземпляр one
в конце:
$ echo "${str/%one/x-x}"
one_#two_two_three_x-x
Все повторыtwo
:
$ echo "${str//two/x-x}"
one_#x-x_x-x_three_one
Экземпляр one
в начале:
$ echo "${str/#one/x-x}"
x-x_#two_two_three_one
Строка, начинающаяся с #
(, заключает в кавычки #
):
$ echo "${str/\#two/x-x}"
one_x-x_two_three_one
Но если оставить#(без кавычек )без кавычек, замена будет установлена в начале переменной:
$ echo "${str/#/====}"
====one_#two_two_three_one
Кроме того, если параметр является массивом, замена выполняется для всех элементов:
$ str=( one two three )
$ echo "${str[@]/#/==}"
==one ==two ==three