bash:文字をエスケープせずに変数にテキストを入れる

bash:文字をエスケープせずに変数にテキストを入れる

この文字列を変数にエスケープすることを心配することなく、変数に入れたいと思います。

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 二重引用したいテキストを入力した後

おすすめ記事