Я форматирование чисел в Баш скрипт с PrintfКак заставить десятичную интерпретацию параметра PRINTF в Bash вместо восьмеричной
printf "%04d" $input # four digits width with leading zeros if shorter
Если input="011"
Printf принимает значение восьмеричный и возвращает 0009
вместо 0011
.
Можно ли заставить printf принимать все значения десятичными?
Почему бы просто не удалить ведущие нули при назначении 'input'? – Barmar
В этом случае я должен проверить любой ввод, если он начинается с нуля. Я думаю, что ответ от chepner/jackman более краток. – lojoe
Вы все равно должны проверить свои данные, не так ли? вы не просто используете пользовательский ввод, не проверяя ничего, правильно? поэтому почему бы не использовать регулярное выражение, например 'if [[$ input = ~^0 * ([[: digit:]] *) $]]; затем input = $ {BASH_REMATCH [1]}; printf '% 04d \ n' "$ input"; else echo 'bad input'; fi'. –