I had the same problem for a digital current sensor I'd like to do. High side sensing is tough! It's far easier to do low side but you may have reasons why you can't do that.
Low side problems:
1. If battery is discharging, the input is negative and the op amp can't amplify with without a neg supply (MAX1044 will solve this)
High side issues:
You can do a simple diff circuit with a single op amp. The low input impedance may be a problem, but if you've got a lot resistance shunt you're probably ok.
There's a 3 op amp circuit with high impedance inputs, but the offset errors are cumulative AND all the resistors are 1% at best, so accuracy is crap. The total offset is a killer for millivolt signal inputs.
You can do a charge pump on the shunt voltage. I.E. charge a capacitor across the shunt, disconnect both leads, and reconnect them against ground and op amp input. The amp must have low impedance to avoid discharging the cap. It's good for digital ADCs with a finite sample period, but its chopped output is a problem for analog readings.
You may not have an op amp capable of going to the positive rail on the input. A neg -5V voltage regulator (or zener) gets you 5V below the rail, and MAX1044 to invert the voltage to 5V above the rail, and you use that for the op amp supply. Problem solved!
Review your specs and see if there's any way you can float the ground. Use the battery + as ground for all your system and the neg voltage reg and MAX1044 to get +5 above the battery +. A simple analog meter always floats like this. There's a lot of possible reasons why you can't do this, and you really have to know what you're doing to spot all these reasons, so be cautious.