Como tomasz apontou , a maneira correta de especificar exatamente quais caracteres constituem o nome da variável é usar chaves , como ${devName}3
.
O Bash permite omitir as chaves como uma conveniência, mas ao fazê-lo, você perde a capacidade de ser totalmente explícito sobre qual variável deseja referenciar. A maneira como o bash resolve isso é pegando o nome de variável válido mais longo possível que inicia após o cifrão. Os nomes de variáveis começam com uma letra ou sublinhado e podem conter qualquer número de letras, números ou sublinhados, mas nenhum outro caractere. Portanto, no seu exemplo, $devName
, bash começa com d
e procura a execução mais longa dos caracteres de letra / número / sublinhado que pode encontrar, que é devName
. É preciso que seja o nome da variável a ser usada. Da mesma forma, algo como $here-is-a-long-string-of-words
usaria a variável chamada here
; seria como ${here}-is-a-long-string-of-words
.
Depois disso, o bash verá
. A contrabarra é uma forma de citar, no sentido de que faz com que o caractere seguinte seja interpretado normalmente, sem qualquer significado especial. Mas 3
não tem nenhum significado especial, então a contrabarra é redundante. Essa sequência acaba sendo equivalente a apenas 3
por si só.