" program files " のような空白を含むパス名を持ったコマンド全体を、変数に保持しててそれを実行したい時
そのままだと動かない。
## これが実行できない。 cmd='ls ~/Library/Application\ Support/' $cmd
空白を含むパス名を入れたコマンドを文字列として、それを実行しようとするとエスケープの処理で頭を悩ますことになる。
eval を使う
cmd='ls ~/Library/Application\ Support/' eval $cmd
または、sh 経由にする
cmd='ls ~/Library/Application\ Support/' sh -c "$cmd":
参考資料
https://stackoverflow.com/questions/836334/executing-commands-containing-space-in-bash