Имя файла не печатается правильно с подчеркиванием "_" в 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

Почему это?

Ответ 1

_ является допустимым символом для имени переменной, а $FOLDERNAME_ не существует.

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

Ответ 2

Проблема здесь: HOME_$date1.tar.gz а также здесь: _$FILENAME. Если вы используете _$, то $ будет скрыт.

Тем не менее вы можете сделать это с помощью \\_$. Затем вы выходите из _ с помощью \, а $ будет интерпретироваться так, как вы привыкли к нему.