GNU/Linux >> Linux の 問題 >  >> Linux

チルダ(〜)が二重引用符の内側に展開されないのはなぜですか?

この回答と私自身の理解によると、チルダはホームディレクトリに展開されます:

$ echo ~
/home/braiam

これで、シェル拡張を機能させたいときはいつでも、i。 e。 $FOOなどの変数名を使用する 、およびスペースなどの予期しない文字が原因で壊れないようにします。二重引用符を使用する必要があります"

$ FOO="some string with spaces"
$ BAR="echo $FOO"
$ echo $BAR
echo some string with spaces

この拡張がチルダで機能しないのはなぜですか?

$ echo ~/some/path
/home/braiam/some/path
$ echo "~/some/path"
~/some/path

承認された回答:

理由は、二重引用符で囲まれているため、チルダ~ 特別な意味はなく、文字通りに扱われます。

POSIXは、二重引用符を次のように定義しています。

文字を二重引用符(“”)で囲むと、
二重引用符内のすべての文字のリテラル値が保持されます。ただし、
文字のドル記号、バッククォート、バックスラッシュは例外です。

アプリケーションは、二重引用符の前に
バックスラッシュを付けて、二重引用符で囲むようにする必要があります。パラメータ「@」には、
二重引用符で囲む特別な意味があります

$を除く 、 ` および@ 、その他の文字は二重引用符で囲まれた文字として扱われます。


Linux
  1. 二重引用符はいつ必要ですか?

  2. PrintfがEchoよりも優れているのはなぜですか?

  3. Unixのマニュアルページで二重引用符の代わりに二重引用符を使用するのはなぜですか?

  1. `md5sum`がインターネットと同じハッシュを与えないのはなぜですか?

  2. 一部のBashインスタンス内で実行されている正確なコマンドラインを確認するにはどうすればよいですか?

  3. Ls -lがすべてのファイルの時間や年を表示しないのはなぜですか?

  1. サーバーが私のIPをブロックしたのはなぜですか?

  2. .bss セグメントが必要なのはなぜですか?

  3. csv の二重引用符を削除する方法