$VARIABLE
и ${VARIABLE}
фактически одинаковы, если они являются отдельными словами. Но обратите внимание на следующий пример, особенно в скрипте
VARIABLE=USER
echo $VARIABLE
вы получаете вывод
USER
, но когда вы вводите
echo $VARIABLE1
, ожидая получить
USER1
, вы ничего не получаете, так как нет переменной, как определено VARIABLE1
Но если вы используете
echo ${VARIABLE}1
, вы получаете ожидаемый вывод USER1
.
от Шона Гоффа: $VAR vs ${VAR} и цитировать или не цитировать
VAR=$VAR 1 - это упрощенная версия VAR=${VAR1}. Есть вещи, которые второй может сделать то, что первый не может, например, ссылаться на массив индексировать (не переносимо) или удалять подстроку (POSIX-portable). См. Подробнее о разделе переменных руководства Bash для начинающих и Расширение параметров в спецификации POSIX.
Использование кавычек вокруг переменной, как в rm -- "$VAR 1" или rm -- "${VAR}" это хорошая идея. Это делает содержимое переменной атомарным. единица. Если значение переменной содержит пробелы (ну, символы в $IFS специальная переменная, по умолчанию пустые) или символы globbing и Вы не цитируете его, тогда каждое слово считается для имени файла поколение (глоббинг), расширение которого приводит столько аргументов к что бы вы ни делали.