シェルスクリプトのAugeas

シェルスクリプトのAugeas

たとえば、シェルスクリプトでaugtoolを使用したいとします。

#!/bin/bash

augtool <<-EOF
print /augeas/load
EOF

ただし、このスクリプトを実行すると、top cmdを介して出力がなく、CPU使用率が100%の状態で無期限に実行されます。

以下を使用してコマンドを正常に実行できます。

$augtool
$print /augeas/load
/augeas/load/Webmin/excl[4] = "/*.dpkg-bak"
/augeas/load/Webmin/excl[5] = "/*.dpkg-new"
/augeas/load/Webmin/excl[6] = "/*.dpkg-old"
/augeas/load/Webmin/excl[7] = "/*.rpmsave"
/augeas/load/Webmin/excl[8] = "/*.rpmnew"
/augeas/load/Webmin/excl[9] = "/*~"
... lots of output...
augtool> quit

Ubuntu 12.04.2を使用しており、augtoolのバージョンは0.10.0です。

私の質問は:シェルスクリプトでaugtoolを使用する方法は?


[編集する]

straceコマンドを実行しましたが、次のエラーが発生しました。

lstat64("/augeas/load/", 0xbfc637d8) = -1 ENOENT (No such file or directory)

その後、繰り返して次のように表示します。

write(2, "\7", 1)                 = 1
rt_sigprocmask(SIG_BLOCK, [INT], [], 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
read(0, "", 1)                    = 0

ただし、このスクリプトをrootとして実行すると正常に実行されます。

答え1

@Flupのように問題を再現することはできません。

augtoolまた、実際にこれを通訳者として使用できます。

#!/usr/bin/augtool -f
print /augeas/load

スクリプトの最後で明示的に呼び出さずに変更するには、-s()フラグと組み合わせてください。--autosavesave

答え2

augtoolコマンドを明示的に終了するとどうなりますか?

#!/bin/bash

augtool <<-EOF
print /augeas/load
quit
EOF

関連情報