私は次のようなものがあります:
A=$(curl https://mysite.com)
そしてカールリクエストは文字列を返します\"Hello World\"
。これで、A
次のいずれかを使用してコンソールに印刷したい場合:
echo "$A"
printf '%s' "$A"
消えた\
。ただと書かれています"Hello World"
。\"Hello World\"
コンソールに入るにはどうすればよいですか?
答え1
バックスラッシュが表示されない場合は、printf '%s' "$A"
バックスラッシュが存在しません。curl https://mysite.com
個別に確認できます。
たぶん、次の出力を見て混乱する可能性があります。
bash-5.0$ typeset -p A
declare -- A="\"Hello World\""
これは、変数を定義するために使用できるbashのシェルコード出力です$A
。シェル言語の構文では、次の内容をエスケープして、これが閉じる引用符ではなくデータの一部であることをシェルに通知するために\
使用されます。"
"
次の出力もあります。
declare -- A='"Hello World"'
同じように動作し、より安全です。またはA=\"Hello\ World\"
など$'"Hello World"'
はシェル言語構文の他の参照形式です。