$ str="a'\"b"
$ declare -p str
declare -- str="a'\"b" # see " was escaped, possibly other chars will too
$ astr=("$str" "c")
$ declare -p astr
declare -ax astr='([0]="a'\''\"b" [1]="c")'
declare -p astr[0]
それでは、同様のことを行い、次のような項目を検索する方法はありますかdeclare -- astr[0]="a'\"b"
?
何かを使用できますが、bashがまだ推測できない方法でastr [n]へのアクセスをsed
許可しているかどうか疑問に思います。declare -p
ベストアンサー1
エスケープされた特殊文字を使用してデータを表示する方法を探している場合は、%q
フォーマット文字列を使用できます。printf
bash
printf '%q\n' "${astr[0]}"
declare -p
提案された-like出力を複製するには、次のようにします。
printf 'declare -- astr[0]="%q"\n' "${astr[0]}"
これは、bash
次の%q
フォーマット文字列に関連するマニュアルの内容ですprintf
。
%q
printf
対応するパラメータは、シェル入力として再利用できる形式で出力されます。