QA@IT

シェルスクリプトで、ディレクトリ名の半角スペースを保持する方法

2799 PV

移動させたいファイルやフォルダのディレクトリと移動先をそれぞれ指定して、
mvで移動させる、というスクリプトを作りたいのですが、
移動させたいファイル名やディレクトリ名に半角スペースが含まれているときに半角スペースを保持する方法はありませんか?

#!/bin/sh

read -p "移動元: " movefrom
read -p "移動先: " moveto

mv $movefrom $moveto

例えば移動元が名称未設定フォルダ名称未設定フォルダ 2という名前だと、

移動元: /Users/sierrabbit/Desktop/名称未設定フォルダ /Users/sierrabbit/Desktop/名称未設定フォルダ\ 2 
移動先: /Users/sierrabbit/Desktop/test
mv: /Users/sierrabbit/Desktop/名称未設定フォルダ: No such file or director
mv: rename 2 to /Users/sierrabbit/Desktop/test/2: No such file or directory

というように、名称未設定フォルダ名称未設定フォルダ 2
名称未設定フォルダ 名称未設定フォルダ 2としてmovefromに格納されてしまいます。
これを、名称未設定フォルダ名称未設定フォルダ 2のままmovefromに格納することはできないでしょうか?

どうかご教示下さい。

動作環境はOSXです。

  

  
追記
emasaka様の回答は予め試していましたが、

mv: rename /Users/sierabbit/Desktop/名称未設定フォルダ /Users/sierabbit/Desktop/名称未設定フォルダ 2 to /Users/sierabbit/Desktop/名称未設定フォルダ 3/名称未設定フォルダ 2: No such file or directory

という風に、""で囲ってしまうと一つのディレクトリ名として受け取られてしまいます。

回答

mvの引数に指定した$movefrom$moveto""で囲むとよいと思います。

mv "$movefrom" "$moveto"
編集 履歴 (0)
ウォッチ

この質問への回答やコメントをメールでお知らせします。