2011-05-05 61 views
10

用下劃線正確打印 「_」 我用這文件名不是在bash

DATE_FOLDER=$(date +"%b-%d-%a-%G") 
FILENAME="HOME_$date1.tar.gz" 

echo $BACKUP_DESTINATION/$DATE_FOLDER/$FOLDERNAME_$FILENAME 

我的輸出是

home/May-04-Wed-2011/HOME_May-04-0718PM-2011.tar.gz 

但如果我用 「 - 」 代替下劃線 「_」

echo $BACKUP_DESTINATION/$DATE_FOLDER/$FOLDERNAME-$FILENAME 

那麼我的輸出中是正確的

/home/May-04-Wed-2011/vmware-HOME_May-04-0717PM-2011.tar.gz 

回答

23

_是變量名的有效字符,並且$FOLDERNAME_不存在。

echo "$BACKUP_DESTINATION/$DATE_FOLDER/${FOLDERNAME}_$FILENAME" 
+0

謝謝,我沒注意到 – Mahakaal 2011-05-05 14:11:20

+0

非常感謝! – 2012-06-08 16:43:03

-2

的問題是在這裏:HOME_$date1.tar.gz 和這裏:_$FILENAME。 如果您使用_$$已轉義。

不過,你可以這樣做:\\_$。 然後你逃過_\$將被解釋爲你習慣它。

+0

建議的解決方案實際上正常工作,但解釋是肥料負荷。 -1 – tripleee 2015-01-19 18:55:32