Imprima a linha desta maneira:
echo '<root><foo a="b">'"$lorem"'</foo><bar value="ipsum" /></root>' >> "$MY_XML"
Isso é necessário porque aspas simples negam o interpretador de shell de substituir variáveis de ambiente dentro
Eu quero criar um arquivo xml simples usando o script bash (não com dom)
mas quando eu defino o valor na linha então echo imprime a palavra $ lorem e não o val
lorem = LOL
echo '<root><foo a="b">$lorem</foo><bar value="ipsum" /></root>' >> $MY_XML
Eu também tento isso
echo '<root><foo a="b">\$lorem</foo><bar value="ipsum" /></root>' >> $MY_XML
echo '<root><foo a="b">"$lorem"</foo><bar value="ipsum" /></root>' >> $MY_XML
echo '<root><foo a="b">\"$lorem\"</foo><bar value="ipsum" /></root>' >> $MY_XML
mas todos estes imprimem exatamente a linha e não o val
por favor, como imprimir o val $ lorem? como o exemplo a seguir
<root><foo a="b">LOL</foo><bar value="ipsum" /></root>
Frustrantemente, talvez, uma das combinações que você omitiu teria funcionado:
echo "<root><foo a=\"b\">$lorem</foo><bar value=\"ipsum\" /></root>" >> $MY_XML
Aspas simples deixam tudo exatamente como você digita. Escapar com \
não funcionará. Aspas duplas avaliarão a string. Dentro de aspas duplas, você pode usar \
para escapar de caracteres específicos (incluindo o próprio caractere de aspas duplas).
Você também pode combinar partes da string que são citadas de maneiras diferentes. Aqui, $lorem
permanece com aspas duplas, mas o restante da string está entre aspas simples:
echo '<root><foo a="b">'"$lorem"'</foo><bar value="ipsum" /></root>' >> $MY_XML
Use um documento in-line com cat
cat >destfile <<EOF
<your ZML here...where $vas expand happly>
but the rest remain as is
EOF
Eu usei isso em muitos scripts