
この文字列を変数にエスケープすることを心配することなく、変数に入れたいと思います。
j!'^+%&/()=1!'^+%&/()c
試み1:(失敗)
VAR='''j!'^+%&/()=1!'^+%&/()c'''
bash: !'^+%: event not found
どうすればいいですか?
答え1
~からこの回答:
$ IFS='' read -r -d '' var <<'EOF'
j!'^+%&/()=1!'^+%&/()c
EOF
$ echo "$var"
j!'^+%&/()=1!'^+%&/()c
$
または、シェル以外のプログラムを介して入力を許可しますcat
。
$ var=$(cat)
j!'^+%&/()=1!'^+%&/()c
$ echo "$var"
j!'^+%&/()=1!'^+%&/()c
$
入力後+をEnter押します。CtrlD
またはbash
以下を使用してくださいprintf
。
$ xargs -0 printf "\n%q\n"
j!'^+%&/()=1!'^+%&/()c
'j!'\''^+%&/()=1!'\''^+%&/()c'
$ var='j!'\''^+%&/()=1!'\''^+%&/()c'
$ echo "$var"
j!'^+%&/()=1!'^+%&/()c
$
ここであなたが必要ですいいえを押して+をEnter押します。CtrlD 二重引用したいテキストを入力した後
答え2
私はこれをたくさん行い、常に文字列全体を二重引用符で囲み、二重引用符(\ ")またはドル記号(\ $)をエスケープすることにしました。これは他のものよりも覚えやすいです。
よく見落とされる別の技術は、隣接する文字列を異なる引用符で連結することです。
VAR=" string without double-quotes "' string with "double-quotes" '
ここでは、引用符が目立つようにスペースを追加しました。二重引用符と中二重引用符の間には、スペースや何も含めてはいけません。これは、それぞれ最初の文字列の終わりと2番目の文字列の先頭にあります。隣接する2つの文字列が連結されます。