Conforme claramente explicado na documentação do Bash sobre aritmética do shell , se você prefixar um número com a 0
dentro de uma expressão de expansão aritmética ( por exemplo , $(( expr ))
), ele será tratado como octal. Da mesma forma, você pode usar b#n
para um número n
em base b
.
No entanto, independentemente da base usada para a aritmética dentro da expressão, o valor é sempre retornado como base 10. Como faço para retornar octal do resultado de uma expansão aritmética?
Meu caso de uso original para isso foi avisar um usuário de que as permissões em seu sistema ~/.my.cnf
eram muito frouxas (legíveis em grupo ou em todo o mundo) juntando os bits de permissão do arquivo com uma máscara de bits, mas depois decidi que testar a saída de find ~/.my.cnf -perm +0044
é provavelmente mais limpo e mais portátil, já stat
que as strings de formato não são padrão entre macOS/BSD e Linux. Ainda assim, a questão permanece.