それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

空白を含むパス名を含むコマンド文字列をシェル(bash)で処理する

" 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