Bashは `declare -p`を使って配列エントリIDと値を表示できますか?

Bashは `declare -p`を使って配列エントリIDと値を表示できますか?
$ 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フォーマット文字列を使用できます。printfbash

printf '%q\n' "${astr[0]}"

declare -p提案された-like出力を複製するには、次のようにします。

printf 'declare -- astr[0]="%q"\n' "${astr[0]}"

これは、bash次の%qフォーマット文字列に関連するマニュアルの内容ですprintf

%q

printf対応するパラメータは、シェル入力として再利用できる形式で出力されます。

おすすめ記事