2012-10-17 78 views
0

我寫了一個小腳本,它複製,然後刪除,然後創建一個從文件移動到新位置的符號鏈接。 爲了方便地多次使用它,我使用了變量,但是當文件中有空格時,即使我在每個空間前使用'\',我也會遇到一些錯誤。 這裏是我的代碼:帶空格變量的問題

dest=~/Videos-win/file\ name\ with\ spaces 
src=~/Downloads/file\ name\ with\ spaces 

echo $dest ; 
cp -r $src $dest ; 
rm -R $src ; 
ln -s $dest $src ; 
echo 'done' 

我也試圖與 '\\'(添加 '\' 的變種)。也給我一些錯誤。

任何人都知道我在做什麼錯? TNX

回答

2

試試這個:

dest="$HOME/Videos-win/file name with spaces" 
src="$HOME/Downloads/file name with spaces" 

echo "$dest" 
cp -r "$src" "$dest" 
rm -R "$src" 
ln -s "$dest" "$src" 
echo 'done' 

請,使用更多的報價!他們至關重要。另外,瞭解'"和`之間的區別。使用雙引號見http://mywiki.wooledge.org/Quoteshttp://wiki.bash-hackers.org/syntax/words

0

嘗試:

cp -r "$src" "$dest" ; 

...

1

您的變量將有「間隔」的價值觀,但隨後的空間將傳遞到了cprmln命令。

將雙引號放在實際使用它們的變量的周圍,以確保將整個值(包括空格)作爲單個參數傳遞給該命令。

嘗試:

cp -r "$src" "$dest" 
rm -R "$src" 
ln -s "$dest" "$src" 

...你並不需要所有的分號...