Главное различие между ' '
(одинарными) и " "
(двойными) кавычками в shell-скриптах заключается в интерпретации специальных символов и подстановке переменных:
echo '$HOME' # Выведет буквально: $HOME
echo "$HOME" # Выведет значение переменной: /home/user
$VAR
)`cmd`
или $(cmd)
)\n
, \t
и т.д.)!command
)Пример:
echo 'Значение $PATH: \n\t$PATH' # Выведет всё как есть, включая \n и \t
$VAR
, ${VAR}
)$(cmd)
)\"
, \$
, ```)!command
)*
для globbing)Пример:
echo "Текущий путь: $PATH" # Подставит значение переменной
echo "Стоимость: \$100" # Экранирование $ (выведет $100)
echo 'Стоимость: $100' # Без экранирования (выведет $100)
echo "Это 'вложенные' кавычки" # Двойные с одинарными внутри
echo 'Это "вложенные" кавычки' # Одинарные с двойными внутри
echo "Он сказал: \"Привет\"" # Экранированные двойные внутри двойных
# В одинарных - буквально
echo 'Line 1\nLine 2' # Выведет \n как текст
# В двойных - интерпретация
echo -e "Line 1\nLine 2" # С флагом -e выведет две строки
Когда использовать одинарные:
Пример:
sql='SELECT * FROM users WHERE name="admin"'
Когда использовать двойные:
Пример:
echo "Ошибка в $(date): $error_msg"
Одинарные кавычки:
Двойные кавычки:
Рекомендации:
Правильное использование кавычек делает скрипты более безопасными, читаемыми и эффективными.