Почему делает Оболочку Bourne printf, выполняют итерации по %s аргументу?

Вы можете сделать это с помощью $unwind в массиве updates, отсортировав результирующие документы с помощью date, а затем $group объединив их на _id, используя отсортированный порядок.

db.servers.aggregate(
    {$unwind: '$service.apps.updates'}, 
    {$sort: {'service.apps.updates.date': 1}}, 
    {$group: {_id: '$_id', 'updates': {$push: '$service.apps.updates'}}}, 
    {$project: {'service.apps.updates': '$updates'}})
7
задан Chris Conway 3 September 2008 в 17:03
поделиться

4 ответа

Вашей переменной ИМЕНИ заменяют как это:

printf "Hello, %s\n" George W. Bush

Используйте это:

#! /bin/sh
NAME="George W. Bush"
printf "Hello, %s\n" "$NAME"
7
ответ дан 7 December 2019 в 03:23
поделиться

существует ли определенная причина, Вы используете printf, или эхо работало бы на Вас также?

NAME="George W. Bush"
echo "Hello, "$NAME

результаты в

Hello, George W. Bush

править: Причина, которой это выполняет итерации по "Джорджу Бушу - младшему", состоит в том, потому что оболочка Bourne является разграниченным пространством. Чтобы продолжать использовать printf, необходимо поместить $NAME в двойные кавычки

printf "Hello, %s\n" "$NAME"
1
ответ дан 7 December 2019 в 03:23
поделиться

Путем я интерпретирую страницу справочника, это, рассматривает строку, Вы передаете его, чтобы быть аргументом; если Ваша строка имеет пробелы, она думает, что Вы передаете несколько аргументов. Я полагаю, что ColinYounger корректен путем окружения переменной кавычками, которая вынуждает оболочку интерпретировать строку как отдельный аргумент.

Альтернатива могла бы быть должна позволить printf развернуть переменную:

printf "Hello, $NAME."

Ссылки для удара, но я вполне уверен, то же содержит для sh.

1
ответ дан 7 December 2019 в 03:23
поделиться

Если Вы хотите, чтобы все те слова были распечатаны самостоятельно, используйте печать вместо printf

printf берет спецификацию форматирования и применяет ее к каждому аргументу, что Вы передаете в. Так как у Вас есть три аргумента {George, W., Bush}, это производит строку три раза с помощью различных аргументов.

0
ответ дан 7 December 2019 в 03:23
поделиться
Другие вопросы по тегам:

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