1

我是新来的,我会尽力解释我的问题:)

我想编写一个备份脚本来保存lvKVM 使用的所有 '。

操作系统:Ubuntu 服务器 x64 12.04

重击 4.2.24

XML文件内容:

<source file='/dev/vg1/lv1'/>
<source file='/dev/vg1/lv2'/>

我的 grep/cut 命令

grep "<source file='.*.'/>" /backup/$SRCNAME/$DATUM/$SRCNAME.xml | cut -f2 -d"'" | cut -f4 -d"/"

这输出

lv1
lv2

我如何让它对每个输出做一些事情 - 将输出存储在数组中是最好的方式吗?

我已经搜索了 2 天的答案:( 我尝试了一些循环和管道,但没有任何效果,因为我的 grep 命令太具体了:/

4

1 回答 1

3

要将其保存到数组中:

array=( $(grep "<source file='.*.'/>" /backup/$SRCNAME/$DATUM/$SRCNAME.xml | cut -f2 -d"'" | cut -f4 -d"/")

您也可以将其通过管道传输到循环中:

grep "<source file='.*.'/>" /backup/$SRCNAME/$DATUM/$SRCNAME.xml | cut -f2 -d"'" | cut -f4 -d"/" | while read lv; do
    echo "$lv"
done

但是请注意,由于管道的原因,循环可能会在子 shell 中运行,因此对变量的更改不会传播回父 shell。

希望这会有所帮助=)

于 2012-10-16T13:13:48.320 回答