В чём разница между $var и ${var}?

Господа, поясните мне непутёвому, в чём разница между $var и ${var}?

Имеется скрипт выкусывающий переменную из файла и пишущий её в базу:
filename=/home/pi/adc/work/integral/$(date "+%Y/%m/%Y%m%d.txt")
var=$(tail -1 $filename | head -1 | cut -c26-30 | tr -d ' ')
rrdtool update /home/pi/adc/PIstat.rrd N:$var

Проблема в том, что в одном случае всё работает правильно, а в другом в базу пишется какое-то совершенно нелепое значение. Решением оказалась замена $var на ${var} в последней строке. Но ведь команды echo $var и echo ${var} показывают одинаковый результат. В чём подвох?
  • Вопрос задан
  • 3371 просмотр
Решения вопроса 1
@inkvizitor68sl
Linux-сисадмин с 8 летним стажем.
{} явно ограничивает указание места, где закончилось название переменной. \
По сути, это одно и тоже (в данном случае).

Но вот с такой конструкцией:
echo blah${var1}blah${var2} blah${var3}${var4}var1 у вас вполне себе будут проблемы.
А ещё будут проблемы, если у вас будут переменные
$var1var2
$var1
А вы захотите сделать:
echo ${var1}var2

Ну и вообще писать {} считается хорошим тоном, даже если в вашей конструкции этого не требуется - повышает читаемость скриптов.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
svd71
@svd71
Подвох в том что не видно разницы в двух переменных типа
echo $VAR ;
echo $VARLOG;
во втором варианте что именно имеется ввиду: отдельная переменная $VARLOG или перевенная $VAR и за ней следом выдавать LOG.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы