bashの引用符内のドル記号補間


9

私が書いたこの小さなテストスクリプトを実行しています。

#!/bin/bash

TESTCASE=$@
testHarness <<runTest
$TESTCASE
runTest

コマンドラインから:

./test.sh "1092$212"

しかし、ドル記号は取り除かれています。私がそれをエスケープした場合、それは機能します。しかし、二重引用符でこれを行う必要から私を保護すると思いました。誰かが私に何が起こっているのか、そしてこれを修正する方法を理解するのを助けてくれますか?


問題は、あなたがここで何を望んでいるのか(私にとって人間であっても)あいまいであるため、コンピューターにチャンスがないことです。おそらく、bashインタープリターは$ 212を得ようとしています。存在しない変数を展開しようとすると、Bashは警告なしで失敗するため、$は取り除かれます。変数を角かっこで囲むことを検討してください。たとえば、「1092 $ {2} 12」
ブライアンピーターソン

回答:


18

変数は引き続き二重引用符で囲まれています。この動作を避けたい場合は、代わりに一重引用符を使用してください。


ありがとうございました。これは機能します。これには理由がありますか?
Amir Afghani、

8
はい。それはそのように設計されました!引用符で囲まれた文字列内の変数を展開できることは、実際には非常に便利です。それが特徴です。動作を望まない場合は、一重引用符を使用してください。これは、そのために設計されたものです。
カレブ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.