No Linux Mint, usando bash..
test="-ffoo"; echo ${test:0:2}
funciona gerando os dois primeiros caracteres
mas
test="-efoo"; echo ${test:0:2}
falha, com saída aparentemente nula.
Eu estou pensando que a forma disso é
${parameter:offset:length}
Eu sei o suficiente que os caracteres de parâmetro não podem ser*@#?-$!0_
mas $test
é o parâmetro - certamente seu conteúdo pode ser qualquer coisa? Eu acho que -e
está desencadeando algo parecido com uma concha, mas por que ..
Quando você corre
echo
é executado com o argumento-e
, que em algumasecho
implementações, incluindo oecho
comando interno da maioria dasbash
implantações, é uma opção válida e, portanto, é “engolido”.printf
Em vez disso, use :