Bem,
- A substituição de comandos é
$( ... ), não${ ... }. Parêntese regular, não chaves. - Você tem
$indexentre aspas simples, portanto, não será expandido pelo shell. Você precisa de aspas duplas para isso. - Coloque aspas duplas em torno de
$datano eco, faz diferença sedatacontiver espaços em branco ou caracteres glob - No bash, você pode usar apenas a expansão de subcadeia
data=${data:$index}para descartar vários caracteres da frente da string.
Sugestão de leitura: link