Mac OS X shell script

MacのTerminal上でファイルを変数にいれて処理する場合、ファイル名に空白が含まれていると、コマンドが空白を引数の区切りとして解釈されうまく動作しない。

 

例)

> touch a\ b\ c
> ls
./    ../    a b c
> foreach f ( * )
foreach? cp $f newname
foreach? end

cpコマンドがファイル名中の空白を区切りとして認識するためエラーとなる。

 

その場合変数を""で括れば動作する。

foreach? cp "$f" newname