A fetltétel rossz. Alapvetően a változóbehelyettesítések után értékelődik ki, vagyis a -r, -w, -d stb. gondot okozhat. Megoldás:
if [ "X$1" = "X-o" ]; then....
(behelyettesítés után ez is megy:
if [ X-f = X-o ] ....
Amúgy szerintem ezt nézd meg: (előadás link)
http://progkor.inf.elte.hu/