Как мне подключиться к 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 это ...!
Ответ #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"
Ответ #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"
-
10
-
12
-
18
-
13
-
3
-
16
-
3
-
12
-
13
-
7
-
15
-
6
-
8
-
9
-
6
-
36
-
51
-
5
-
5
-
14
-
85
-
9
-
10
-
8
-
11
-
8
-
15
-
11
-
13
-
5
-
9
-
3
-
18
-
8
-
7
-
15
-
5
-
7
-
13
-
6
-
30
-
15
-
6
-
7
-
16
-
19
-
10
-
30
-
16
-
39