Saya menjalankan skrip tes kecil ini yang saya tulis:
#!/bin/bash
TESTCASE=$@
testHarness <<runTest
$TESTCASE
runTest
dari baris perintah:
./test.sh "1092$212"
tapi tanda dolar sedang dihapus. Jika saya menghindarinya, itu berhasil. Tetapi saya pikir tanda kutip ganda akan melindungi saya dari keharusan melakukan ini. Dapatkah seseorang tolong bantu saya memahami apa yang terjadi dan bagaimana cara memperbaikinya?
Masalahnya adalah ambigu - bahkan bagi saya sebagai manusia - apa yang Anda inginkan di sini, sehingga komputer tidak memiliki kesempatan. Mungkin penerjemah bash mencoba untuk mendapatkan $ 212. Bash diam-diam gagal jika Anda mencoba memperluas variabel yang tidak ada, sehingga $ akan dihapus. Pertimbangkan untuk memasukkan variabel Anda di dalam tanda kurung, misalnya "$ 1092 {2} 12"
—
Brian Peterson