shell - что такое двойная квота ((..))?

Я бы просто вручную разрешил конфликты и выполнил debuild -S, как обычно.

1
задан 8 January 2015 в 12:42

3 ответа

Это позволяет вычислять математическое выражение и подстановку результата

Арифметическое расширение позволяет оценивать арифметическое выражение и замену результата. Формат арифметического расширения: $ ((выражение)). Выражение рассматривается так, как если бы оно находилось в двойных кавычках, но двойная кавычка внутри круглых скобок не обрабатывалась специально. Все токены в выражении подвергаются расширению параметров, расширению строки, замене команд и удалению цитат. Арифметические расширения могут быть вложенными. Оценка выполняется в соответствии с правилами, перечисленными ниже в разделе АРИМЕТИЧЕСКАЯ ОЦЕНКА. Если выражение недействительно, bash печатает сообщение, указывающее на сбой, и никакой замены не происходит. Bash Manpage
0
ответ дан 24 May 2018 в 00:21

((..)) просто сообщает интерпретатору оболочки, что вы будете делать арифметику. Обычно в bash вам понадобятся обратные шаги `...` для выполнения арифметики. Это альтернативный синтаксис, который больше похож на C, и позволяет таким вещам, как i ++, увеличивать переменную i на 1. Существует ответ на stackoverflow, который объясняет это хорошо.

0
ответ дан 24 May 2018 в 00:21

В bash (не в оболочке POSIX), ((выражение)) позволяет выполнять арифметическую оценку. Это то же самое, что:

let "expression"

Он не создает никаких анонимных переменных, он оценивал выражение в текущей оболочке, затрагивал все переменные в текущем контексте оболочки. Если значение выражения не равно нулю, статус возврата равен 0, в противном случае статус возврата равен 1.

Заметка, что ((...)) и let являются функциями из ksh и доступны только в bash, zsh и ksh. Вы должны использовать ((..)) над let, потому что это более читаемо и легко процитировать, чем с помощью let.

Для переносимости, используя ((выражение)) конструкцию . [ ! d4]

0
ответ дан 24 May 2018 в 00:21
  • 1
    О возвращаемом значении, кажется, возвращает результат выражения. – Eric Wang 8 January 2015 в 13:06
  • 2
    @EricWang: Нет, прочитайте ссылку, которую я дал в своем ответе, или прочитайте документацию let builtin. – cuonglm 8 January 2015 в 13:07
  • 3
    Документ в вашей ссылке означает return status, который получает $?, а не возвращаемое значение. – Eric Wang 8 January 2015 в 13:14
  • 4
    @EricWang: Я имею в виду return status, обновленный ответ. – cuonglm 8 January 2015 в 13:16

Другие вопросы по тегам:

Похожие вопросы: