O problema é que você está tentando fazer referência a uma variável chamada $ibhav
(não $i
).
As variáveis podem ter mais de um caractere e, no seu exemplo, o shell não tem como saber se você quis dizer $i
ou $ibhav
(ou $ibha
ou $ibh
ou $ib
).
A correção é colocar os nomes das variáveis em parêntesis:
echo "${d}${m}${i}bhav.csv.zip"
para que não seja ambíguo qual variável você está referenciando.
De man bash
:
Parameter Expansion
The '$' character introduces parameter expansion, command substitution, or
arithmetic expansion. The parameter name or symbol to be expanded may be
enclosed in braces, which are optional but serve to protect the variable
to be expanded from characters immediately following it which could be
interpreted as part of the name.
When braces are used, the matching ending brace is the first '}' not
escaped by a backslash or within a quoted string, and not within an embed‐
ded arithmetic expansion, command substitution, or parameter expansion.
${parameter}
The value of parameter is substituted. The braces are required
when parameter is a positional parameter with more than one digit,
or when parameter is followed by a character which is not to be
interpreted as part of its name. The parameter is a shell parame‐
ter as described above PARAMETERS) or an array reference (Arrays).