Там какая-либо причина состоит в том, чтобы выйти из точки в расширении имени файла удара?

Поскольку Вы спросили “в одной строке”:

awk '{print>sprintf("%sfile.%d",NR%2?"odd":"even",PROCINFO["pid"])}' filename

Обратите внимание, что большая часть кода происходит из-за Вашего необычного выходного выбора имени файла. Иначе следующего кода было бы достаточно для помещения нечетных строк в “строку 1” и даже строки в “строке 0”:

awk '{print>"line-"NR%2}' filename
5
06.11.2012, 01:01
2 ответа

Нет никакого различия. Точка . не специальный символ оболочки, для которого нужно заключение в кавычки, и обратная косая черта будет просто удалена во время удаления кавычки. Это верно в большинстве оболочек, не просто bash.

3
27.01.2020, 20:39
  • 1
    Спасибо, это - сопроводительная документация, для которой я смотрел. –  Dave Forgac 05.11.2012, 20:46

Не ответ на Ваш вопрос, который был уже рассмотрен @jw013, но обратите внимание на то, что в то время как \ и {} являются лишними здесь, существует несколько вещей, отсутствующих. Как переменные должен быть заключен в кавычки, и -- отметить конец опций отсутствует.

cp -v -- "$LOG_DIR/$APPLICATION".*.log "$ARCHIVED_LOG_DIR"
3
27.01.2020, 20:39
  • 1
    я собирался упомянуть это в комментарии, но не сделал, поскольку это не относилось к вопросу. Однако все эти корректировки действительно необходимы для максимальной устойчивости. –  jw013 05.11.2012, 21:14
  • 2
    @jw013, согласованный, но я думаю, что это стоит упомянуть. \ вводит в заблуждение, но безопасный, {} является косметическим и вопрос вкуса, но недостающие кавычки или - являются неправильными. –  Stéphane Chazelas 06.11.2012, 01:16

Теги

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