Я запускаю этот маленький тестовый скрипт, который я написал:
#!/bin/bash
TESTCASE=$@
testHarness <<runTest
$TESTCASE
runTest
из командной строки:
./test.sh "1092$212"
но знак доллара снимается. Если я убегу, это сработает. Но я думал, что двойные кавычки защитят меня от необходимости делать это. Может кто-нибудь, пожалуйста, помогите мне понять, что происходит и как это исправить?
Проблема в том, что это неоднозначно - даже для меня как человека - то, что вы хотите здесь, поэтому у компьютера нет шансов. Возможно, интерпретатор bash пытается получить $ 212. Bash молча терпит неудачу, если вы пытаетесь раскрыть переменную, которая не существует, таким образом, $ удаляется. Попробуйте заключить переменные в квадратные скобки, например, «1092 $ {2} 12»
—
Брайан Петерсон