Estoy ejecutando este pequeño script de prueba que escribí:
#!/bin/bash
TESTCASE=$@
testHarness <<runTest
$TESTCASE
runTest
desde la línea de comando:
./test.sh "1092$212"
pero el signo de dólar está siendo eliminado. Si me escapo, funciona. Pero pensé que las comillas dobles me protegerían de la necesidad de hacer esto. ¿Puede alguien ayudarme a entender qué está pasando y cómo solucionarlo?
El problema es que es ambiguo, incluso para mí como humano, lo que quieres aquí, por lo que la computadora no tiene ninguna posibilidad. Quizás el intérprete bash esté tratando de obtener $ 212. Bash falla silenciosamente si intenta expandir una variable que no existe, por lo que se elimina el $. Considere incluir sus variables entre paréntesis, por ejemplo, "1092 $ {2} 12"
—
Brian Peterson