bashでdconfのリストを繰り返す方法は?

bashでdconfのリストを繰り返す方法は?

dconfでGnome端末設定ファイルのリストを読みたいです。

$ dconf read /org/gnome/terminal/legacy/profiles:/list
['b1dcc9dd-5262-4d8d-a863-c897e6d979b9', '1a3bb41a-5de6-4a23-af30-e70b4b8e5230', 'afa18dee-db51-42b6-b15d-cc35a5738932', '69a27e59-4bc4-4a9c-ba5c-1201ebdb9841']

その後、残りのリストを繰り返します。噛むことなくこれを行うための合理的な方法はありますかtr?現在私は以下を持っています:

for PROFILE in $( dconf read /org/gnome/terminal/legacy/profiles:/list|tr -d "[],'");
do
    dconf write /org/gnome/terminal/legacy/profiles:/:${PROFILE}/word-char-exceptions '@ms "-,.;/:?%&#_=+@~·"'
done

ところでこれはちょっと嫌な気がします。この場合、セットが[],'値に表示されないことがわかりますが、これは普遍的に真ではありません。 (このリストはダッシュで区切られた小文字の16進数のUUIDですが、すべてのリストはそうではありません。)実際にはより良い方法はありますか?説明するここで提供されている角かっこリストの構文は代わりに解決されますか?

ベストアンサー1

あなたが使用できるコメントで指摘したようにjq、これはそれほど見えませんが、'気に入っています"

dconf read /org/gnome/terminal/legacy/profiles:/list | tr "'" '"' | jq

期待どおりに動作

[
  "b1dcc9dd-5262-4d8d-a863-f897e3d979b9",
  "7b765e06-1bcc-4695-86d6-c2d391651ac2"
]

次も動作します

dconf read /org/gnome/terminal/legacy/profiles:/list | \
  tr "'" '"' | \
  jq '.[]' | \
  while read PROFILE; do
      echo "here's the logic for $PROFILE"
  done

おすすめ記事