変数内の「?」文字をエスケープできません(Unix)

変数内の「?」文字をエスケープできません(Unix)

私はこの質問を見つけるためにすべてを見つけましたが、それを見つけることができず、現在の問題に対する答えもないようです。

それでは、私がやりたいことは疑問符から抜け出すのでしょうか?私の変数宣言から。明確に書かれた

var=?

しません。もちろん、バックスラッシュと疑問符を使用して問題を解決できます。通常は次のようになります。

var=\?

しかし、これはうまくいきません(しかし実際にはうまくいくはずです)。変数をエコーすると、実際に次のものが出力されます。

5 A X

(これは私のホームディレクトリにある3つのフォルダです。)その後、私のホームディレクトリやルート(フォルダA、B、Cがあります)などのディレクトリにあるときにこれが発生することがわかりました。そのため、cwdを新しく作成された空のディレクトリに変更しましたが、突然動作しました。これの具体的な理由は何ですか? 1文字のフォルダ名でしか発生しないようですが、\?で疑問符をエスケープしたので、そんなことは起こってはいけないと思います。

答え1

echoコマンドでこの変数を引用する必要があります。

$ var=?
$ echo "$var"
?

答え2

真実を教えてください。これ正しい脱出方法は状況によって異なります。最大使用するシェルによって異なります。最も一般的なエスケープ文字(すでに述べたように)はバックスラッシュです\。ただし、使用方法と使用するシェルによって異なります。方法はさまざまです。

だから。要約すると。これ正しい答えは、使用中のシェルが提供されている場合にのみ提供できます。 :)

関連情報