shell脚本中的Augeas

shell脚本中的Augeas

我正在尝试在 shell 脚本中使用 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。

我的问题是:如何在shell脚本中使用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

相关内容