Значение `10 # N`

Джимми писал :

Я бы, вероятно, в конечном итоге использовал временный каталог в этом случае:

for file in [[:digit:]]*.png; do echo mv $file tmp/$(printf %04d $((10#${file%.png}+1))).png done 

Важной частью является 10#N которая заставляет bash интерпретировать 000N как просто N , иначе ведущие нули обозначают восьмеричные числа.

Является ли 10#N частью арифметического расширения или что-то еще?

Это упоминается в инструкции Bash или POSIX? Я не нахожу его.

  • Список всех файлов, содержащих определенную строку.
  • Bash - Как я могу сделать «Нажмите любую клавишу, чтобы продолжить»
  • Можно ли предположить, что нулевые или неустановленные переменные будут заменены нулем в арифметических выражениях bash?
  • BASH: запустить фоновый процесс и проверить, когда он заканчивается
  • Смена PS1 на интерактивной подстроке bash
  • Как избежать специальных символов в строке?
  • Что означают квадратные скобки без «если» слева?
  • в окне «Новый терминал»: количество от 1 до 10
  • 3 Solutions collect form web for “Значение `10 # N`”

    10#N или общий вид [base#]n где 2 <= base <= 64 будет интерпретировать n как число в этой базе.

    Об этом говорилось в руководстве bash , в разделе Shell Arithmetic .

    Обратите внимание, что эта функция не указана POSIX, доступная только в bash , ksh и ее производных, zsh с базой от 2 до 36.

    Из раздела «Арифметическая оценка» руководства bash ,

    Константы с ведущим 0 интерпретируются как восьмеричные числа. Ведущий 0x или 0X обозначает шестнадцатеричный. В противном случае числа принимают вид [base #] n, где base – десятичное число от 2 до 64, представляющее арифметическую базу, а n – число в этой базе. Если база # опущена, то используется база 10. Знаки больше 9 представлены строчными буквами, буквами верхнего регистра, @ и _ в этом порядке. Если основание меньше или равно 36, строчные и прописные буквы могут использоваться взаимозаменяемо, чтобы представлять числа от 10 до 35.

    Конечно, это в man bash Внутри ARITHMETIC EVALUATION :

     LESS=+/'\[base#\]n,' man bash 

    В противном случае числа принимают форму [base #] n, где необязательная база представляет собой десятичное число от 2 до 64, представляющее арифметическую базу, а n – число в этой базе.

    Interesting Posts
    Linux и Unix - лучшая ОС в мире.