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