Você pode usar um regex no bash (3.0 ou superior) para fazer isso:
if [[ $strname =~ 3(.+)r ]]; then
strresult=${BASH_REMATCH[1]}
else
echo "unable to parse string $strname"
fi
No bash, os grupos de captura de uma expressão regular são colocados na matriz especial BASH_REMATCH
. O elemento 0 contém a correspondência inteira e 1 contém a correspondência do primeiro grupo de captura.