关于linux:文件名无法在bash中使用下划线“_”正确打印

Filename not printing correctly with underscore “_” in bash

我正在使用这个

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

echo $BACKUP_DESTINATION/$DATE_FOLDER/$FOLDERNAME_$FILENAME

我的输出是

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

但如果我使用" -"代替下划线"_"

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

那么我的输出是正确的

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


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

1
echo"$BACKUP_DESTINATION/$DATE_FOLDER/${FOLDERNAME}_$FILENAME"


问题出在这里:HOME_$date1.tar.gz
还在这里:_$FILENAME
如果您使用_$,则转义$

不过你可以用:\\_$
然后使用\转义_$将被解释为您习惯使用它。