文件名不是在bash

问题描述:

用下划线正确打印 “_” 我用这文件名不是在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 

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

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

谢谢,我没注意到 – Mahakaal 2011-05-05 14:11:20

+0

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

的问题是在这里:HOME_$date1.tar.gz 和这里:_$FILENAME。 如果您使用_$$已转义。

不过,你可以这样做:\\_$。 然后你逃过_\$将被解释为你习惯它。

+0

建议的解决方案实际上正常工作,但解释是肥料负荷。 -1 – tripleee 2015-01-19 18:55:32