Como mencionado por steeldriver, as aspas simples suprimem todas as expansões de shell, então $OLDSTR
é passado literalmente para sed
. Como isso não ocorre nos arquivos, não corresponde a nada, então nada é feito. Você pode passar variáveis para sed
usando aspas duplas:
sed -i -- "s#$OLDSTR#$NEWSTR#g" "$file"
mas talvez em geral é mais seguro ativar e desativar as citações strongs e aspas duplas como normalmente faria
sed -i -- 's#'"$OLDSTR"'#'"$NEWSTR"'#g' "$file"