Eu estava procurando uma maneira de converter hexadecimal via linha de comando e descobri que existe um método muito fácil echo $((0x63))
.
Está funcionando muito bem, mas estou um pouco confuso sobre o que está acontecendo aqui.
Eu sei que $(...)
normalmente é um sub-shell, onde o conteúdo é avaliado antes do comando externo.
Ainda é um sub-shell nessa situação? Estou pensando que não, isso significaria que o sub-shell está apenas avaliando o (0x63)
que não é um comando.
Alguém pode quebrar o comando para mim?
$((...))
conflitos com a substituição de comandos, é preciso lembrar de escrever emecho "$( (echo x; echo y) | tr xy yx)"
vez deecho "$((echo x; echo y) | tr xy yx)"
(mesmo que alguns shells ainda aceitem o último, YMMV).$(( ))
produz resultados afetados pela divisão de palavras ou globbing?IFS=9; echo $((0x63))
,. Ver também implicações de segurança de esquecer de citar uma variável em bash / shells POSIX (What about [ $# -gt 1 ]
seção)Esta não é uma subcamada, mas uma avaliação aritmética. De
man bash
:fonte
((...))
não é exatamente o mesmo que$((...))
. Ambos fazem avaliação aritmética, mas o último é substituído pelo valor resultante como uma sequência.