1
bash連想配列のキーに対してパターン置換を実行する必要があります。例:foo_
とbash連想配列のキーでパターン置換を実行する方法
$ declare -A aa=([A]=0 [B]=1 [C]=2)
値をプレフィックスに1を使用することができます。
$ echo --${aa[@]/#/foo_}--
--foo_0 foo_1 foo_2--
しかし、どのようにキーを接頭辞には?
$ echo --${!aa[@]/#/foo_}-- # <- does not work
----
は次の回避策より良い方法があります:これは(バージョン4.3.30(1)-release、少なくともGNUのbashで)動作しませんか?
$ declare -a keys=(${!aa[@]})
$ echo --${keys[@]/#/foo_}--
--foo_A foo_B foo_C--
シンプルでエレガント。どうすれば 'printf'を忘れることができますか? –
あなたのソリューションは、接頭辞または接尾辞の追加などの単純な置換に最適です。たとえば、 'bar_'という接頭辞を' foo_'で置き換えるなど、より複雑な置換を提案していますか? –
接頭辞を置き換えることは、1つのステップでは不可能かもしれません。私はいくつかの掘削をさせてください。 – anubhava