$ {1: + “$”} в/bin/sh

CSV-файлы обычно используют кавычки вокруг полей, которые содержат символы-разделители полей, и используют обратную косую черту или другую кавычку для экранирования буквальной кавычки.

CSV не является четко определенным форматом, однако существует множество вариантов, реализованных разными поставщиками. Если вы хотите лучше округленный текстовый формат, который может хранить структурированные данные, вам следует использовать вместо этого один из лучше определенных форматов сериализации, таких как JSON и YAML.

27
задан pdiddy 30 September 2008 в 19:41
поделиться

3 ответа

'Истеричный Изюм', иначе Исторические Причины.

объяснение от JesperE (или страница справочника Bash) точно для того, что это делает:

, Если 1$ существует и не является пустой строкой, то замените заключенным в кавычки списком аргументов.

Однажды приблизительно на 20 лет назад, некоторые поврежденные незначительные варианты Оболочки Bourne заменили пустой строкой "" "$", если не было никаких аргументов вместо корректного, текущего поведения замены ничем. Используются ли какие-либо такие системы все еще, открыто для дебатов.

[Хм: то расширение не работало бы правильно на:

command '' arg2 arg3 ...

В этом контексте, корректная нотация:

${1+"$@"}

Это работает правильно, является ли 1$ пустым аргументом или нет. Так, кто-то помнил нотацию неправильно, случайно представляя ошибку.]

22
ответ дан 28 November 2019 в 05:44
поделиться

Из страницы справочника удара:

   ${parameter:+word}
          Use Alternate Value.  If parameter is null or unset, nothing  is
          substituted, otherwise the expansion of word is substituted.

Так, "$@" заменен, если $1 не сброшен. Я не вижу, почему они, возможно, не просто использовали "$@".

3
ответ дан 28 November 2019 в 05:44
поделиться

Процитируем соответствующую часть man bash для информации, которую Джонатан Леффлер упомянул в своем комментарии:

Когда не выполняется раскрытие подстроки , bash проверяет параметр, который не установлен или равен нулю ; исключение двоеточия приводит к тесту только для параметра, который не установлен .

(выделено мной)

3
ответ дан 28 November 2019 в 05:44
поделиться
Другие вопросы по тегам:

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