Вы можете вставлять переменные только в строки с двойными кавычками.
Простой и безопасный способ сделать это - выйти из строки с одинарными кавычками следующим образом:
xml=''"$str1"' '"$str2"' '
Обратите внимание, что после выхода из строки с одинарными кавычками я заключил переменные в двойные кавычки. Это сделано для того, чтобы обеспечить безопасность специальных символов внутри переменных.
Поскольку вы просили другой способ, вот неполноценная альтернатива с использованием printf
:
xml=$(printf '%s %s ' "$str1" "$str2")
Она неполноценна, поскольку для достижения того же эффекта используется вложенная оболочка, что является ненужным дополнительным процессом.
Как написал в комментарии @steeldriver, в современных версиях bash можно написать так, чтобы избежать вложенной оболочки:
printf -v xml ' ... ' "$str1" "$str2"
Поскольку printf
является встроенным модулем оболочки, эта альтернатива, вероятно, частично совпадает с моим первым предложением вверху.