2012-06-01 97 views
3

我有以下文件: 〜/ tmp目錄/ testbash $ L 文件1.test move.sh *的bash腳本變量空間

where move.sh is: 
#!/bin/bash 
#-x 

FILENAME='file\ .test' 
echo $FILENAME 
echo joo 
mv $FILENAME test.test 

當我運行./move.sh我得到這個輸出和錯誤:

file\ .test 
joo 
mv: target `test.test' is not a directory 

的問題是,它作爲執行命令: MV文件。測試test.test 而不是: MV文件\。測試test.test

任何建議來解決這個問題?

+0

請不要」將答案編輯成問題,保持答案分開,讓他們被選中,評論和獨立編輯,取而代之的是通過你接受的答案來點擊複選框 –

+0

(......對內容講話:區分數據和句法很重要;'foo \ bar'中的反斜槓是語法[導致下面的空間被視爲文字],而'foo \ bar''中的反斜線是數據)。 –

回答

3

使用,如果你有一個變量值裏的空格雙引號:

FILENAME='file\ .test' 
echo "$FILENAME" 
echo joo 
mv "$FILENAME" test.test 
+0

謝謝,這對我很有用 – user1408786

+0

如果這個名字包含一個**文字**反斜線,那麼這個工作就行,如果意圖是逃避這個空間的話。查看OP編輯到他們的問題中的答案(在歷史中,如果在閱讀本評論時不再出現),該答案不存在該字面反斜槓。 –

8

如果變量包含嵌入的空格,然後括在雙引號變量(「)

FILENAME='file .test' 
mv "$FILENAME" test.test