Как мне подключиться к printf?

Я схожу с ума, пытаясь понять, в чем проблема 9X_bash-variables в этом простом примере (zsh или bash):

echo -n "6842" | printf "%'d"

Вывод 9X_.bash-profile будет 0 ... но почему? Я бы хотел, чтобы 9X_bash-script результат был 6,842

Заранее спасибо, мне уже час 9X_bash-alias не везет, используя Google, пытаясь понять 9X_.bash-profile это ...!

6
0
2
Общее количество ответов: 2

Ответ #1

Ответ на вопрос: Как мне подключиться к printf?

printf считывает аргументы для форматирования 9X_bashrc не со стандартного ввода, а напрямую из 9X_bashrc командной строки. Например, это работает:

$ printf "%'d" 6842
6,842

Вы 9X_bashrc можете преобразовать вывод команды в аргументы 9X_bash-function командной строки, используя подстановку 9X_bash-variables команды:

$ printf "%'d" $(echo -n 6842)
6,842

Если вы хотите вызвать printf внутри конвейера, вы 9X_bash можете использовать xargs для чтения ввода и 9X_bash-variables выполнения printf с соответствующими аргументами:

echo -n "6842" | xargs printf "%'d"

11
0

Ответ #2

Ответ на вопрос: Как мне подключиться к printf?

printf не форматирует данные, передаваемые ему 9X_bashrc на стандартный ввод; он принимает набор 9X_bash аргументов, первый из которых - это формат, а 9X_bash-variables остальные - значения для отображения.

К счастью, это 9X_bash-function именно то, для чего предназначен xargs; процитировать 9X_bash-variables руководство:

xargs - строить и выполнять 9X_.bash-profile командные строки из стандартного ввода

Таким 9X_bash-script образом, вместо прямого подключения к printf вы 9X_bash-alias можете передать по конвейеру xargs и указать 9X_bash-script ему запустить printf для вас с заданными аргументами. Вкратце:

echo -n "6842" | xargs printf "%'d"

3
0