お、思いついたw

read workとやってwork変数を使う

だけどそうすると上書きされちゃうから
set -- "$work"として$1にバックアップしておく
そいでecho "$work"してから$1を$workに戻す

ただしwork変数はread前に定義されてない可能性があるから
そこは変数が定義されてるかどうかで処理を分ける(めんどくさいから任せたw)

これで一時的には変数を使うけど使うけど最終的に副作用はない