Existem muitas opções, mas a maneira que eu recomendaria é printf
.
Ele não imprime uma nova linha por padrão, portanto, alterar seu echo
para um printf
deve remover a nova linha indesejada.
while read pos; do
string1='printf "%s" $pos | cut -c 20-38'
string2="=$pos"
string3="$string1 $string2"
printf "%s\n" "$string3"
done < file
Ou talvez apenas
while read pos; do
string1='printf "%s" $pos | cut -c 20-38'
string2="=$pos"
printf "%s=%s\n" "$string1" "$string2"
done < file
Saída
1234567890QWERTYUXY=abcdefghi1234567890QWERTYUXY.tar.gz
Dito isso, seu script original funciona para mim também. : - /
Saída
1234567890QWERTYUXY abcdefghi1234567890QWERTYUXY.tar.gz