Я пытаюсь создать и использовать переменные Heredoc, как это,Heredoc без кавычек не расширяет параметры
#!bin/bash
sudo su - postgres <<EOF
IP="XYZ"
echo "$IP"
EOF
Это не работает правильно, и я получаю пустую строку, как эхо. Но если я использую кавычки EOF
как это,
#!bin/bash
sudo su - postgres <<"EOF"
IP="XYZ"
echo "$IP"
EOF
Он работает. Может ли кто-нибудь объяснить это? Согласно тому, что я читал в man
, поведение должно быть противоположным.
Каков ваш выход для каждой команды? В первом переменная будет расширена, во втором - нет. Кроме того, переменная никогда не устанавливается, поскольку она рассматривается только как строка. – 123
Обратите внимание, что проблема на самом деле является обратной задачей описания проблемы: здесь doc без кавычек _is_ параметры расширения! –
, как я уже упоминал, единственным выходом является «echo», который дает пустую строку в первом и правильный вывод i.e 'XYZ' во втором. – wolfsgang