Todos os caracteres são interpretados literalmente entre aspas simples. Você usou aspas duplas e alguns caracteres ( $"\'
) são interpretados entre aspas duplas. Vejo
Qual é o significado de uma única variável? e aspas duplas em variáveis de ambiente? No entanto, o exemplo da sua pergunta nunca usa caracteres problemáticos. Outros possíveis problemas que você evita estão usando echo
(o echo
integrado executa a expansão de barra invertida em alguns shells, mas não no bash, a menos que você o habilite explicitamente) e a falta de aspas duplas em torno de $1
( echo $1
executaria expansão de barra invertida; echo "$1"
não, em bash).
Uma maneira segura e portátil de imprimir uma string é literalmente
printf '%s\n' "$1"
Remova \n
se você não quiser uma nova linha após a string.
Este é o seu código real? Se for, certifique-se de que o problema não está na maneira como você está passando os argumentos - você deve escrever algo como
myscript '\left( \begin{array}{cc}1 & 2\ 3 & 4\end{array} \right)' filename
Se você precisar de uma aspa simples dentro do snippet TeX, você terá que escapar dela: '\''
.
Você pode estar interessado na construção here document , que permite que você tenha convenientemente uma cadeia de várias linhas em sua origem Arquivo. Ou você pode incluir uma string multilinha entre aspas simples.
printf '%s' '\documentclass{article}
\usepackage[utf8x]{inputenc}
\pagestyle{empty}
\begin{document}
\[ '"$1"' \]
\end{document}
' >"/tmp/$2.tex"
Note que você deve usar aspas duplas em torno de $2
também. Sempre use aspas duplas em torno de uma substituição de variável, a menos que você tenha uma boa razão para não fazê-lo.