保存 'grep |剪切'到变量



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

我想编写一个备份脚本来保存kvm使用的所有lv

OS:Ubuntu Server x64 12.04

bash 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命令太具体了:/

将其保存到数组中:

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

请注意,由于管道,循环可能在子壳中运行,因此变量变化不会传播回父壳。

希望这有帮助=)

相关内容

  • 没有找到相关文章