Significado de '10 #N '

6

Jimmij escreveu :

I would probably end up using temporary directory in this case:

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

The important part is 10#N which forces bash to interpret 000N as just N, otherwise leading zeros denotes octal numbers.

10#N é parte da expansão aritmética ou alguma outra coisa?

Isso é mencionado no manual do Bash ou na especificação POSIX? Eu não encontro isso.

    
por Tim 11.04.2016 / 16:52

3 respostas

13

10#N ou uma forma geral [base#]n em que 2 <= base <= 64 interpretará n como o número nessa base.

A seção bash manual, Aritmética da Shell mencionou isso.

Observe que esse recurso não é especificado pelo POSIX, disponível apenas em bash , ksh e suas derivadas, zsh com base entre 2 e 36.

    
por 11.04.2016 / 17:13
8

Na seção de Avaliação Aritmética do manual do bash ,

Constants with a leading 0 are interpreted as octal numbers. A leading 0x or 0X denotes hexadecimal. Otherwise, numbers take the form [base#]n, where base is a decimal number between 2 and 64 representing the arithmetic base, and n is a number in that base. If base# is omitted, then base 10 is used. The digits greater than 9 are represented by the lowercase letters, the uppercase letters, @, and _, in that order. If base is less than or equal to 36, lowercase and uppercase letters may be used interchangeably to represent numbers between 10 and 35.

    
por 11.04.2016 / 17:13
2

Claro que está no man bash Inside ARITHMETIC EVALUATION :

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

Otherwise, numbers take the form [base#]n, where the optional base is a decimal number between 2 and 64 representing the arithmetic base, and n is a number in that base.

    
por 12.04.2016 / 01:48

Tags