$、&シンボルを正しくエコーする方法は?

$、&シンボルを正しくエコーする方法は?

&a変数が定義されると画面に出力されますa。これが私のbashで起こっていることです。

localhost:~ $ a=5
localhost:~ $ echo $$a
83079a
localhost:~ $ echo ^$a
^5
localhost:~ $

私はそれを理解できません$a

この投稿を見つけました。https://stackoverflow.com/questions/4087695/escaping-ampersands-in-windows-batch-files

echo a ^& bwill get と出てきますが、 a & b私の bash で次のようになります。

localhost:~ $ echo a ^& b
[1] 83134
a ^
-bash: b: command not found

答え1

echo変数に二重引用符を使用する

localhost:~ $ a=5
localhost:~ $ echo "$a"
5
localhost:~ $ echo '$a'
$a
localhost:~ $ echo "a & b"
a & b

または\引用符なしでエスケープするには、バックスラッシュを使用します。

localhost:~ $ echo a \& b
a & b
localhost:~ $ echo \$a
$a

答え2

r@S:/tmp # a=10
r@S:/tmp # echo $a
10
r@S:/tmp # echo \$a
$a
r@S:/tmp # 

関連情報