web-dev-qa-db-ja.com

Augeas編集オプションが存在する場合は追加し、そうでない場合は追加します-新しく作成されたノードを参照します

私は次のようなことをしたい:

set /files/etc/exports/dir[. = '/export/home'][client = '10.0.0.0/8'] /export/home
set /files/etc/exports/dir[. = '/export/home'][client = '10.0.0.0/8']/client 10.0.0.0/8

上記を実行すると、2番目のコマンドがdir値を設定せずにさらに別の新しいノードを作成します。私の課題は、読みやすさのためにクライアントが新しい行に追加されるため、/ export/homeshareが一意のディレクトリではないことです。一意のノードを見つけるには、dirとclientの両方の検索オプションが必要です。

コマンド1で(おそらく)新しく作成されたノードを参照して、最終結果を次のようにするにはどうすればよいですか?

/export/home 10.0.0.0/8()
1
Jon Skarpeteig

Augeasには defnode と呼ばれるものがあり、setコマンドを実行して、指定された変数に結果のノードを格納します。

私の問題の解決策:

defnode newdir /files/etc/exports/dir[. = '/export/home' and client = '10.0.0.0/8'] /export/home
set $newdir/client 10.0.0.0/8
set $newdir/client/option[1] rw
set $newdir/client/option[2] async
set $newdir/client/option[3] no_subtree_check

* Edit:読みやすくするために][andに変更しました

1
Jon Skarpeteig