我是新来的,我会尽力解释我的问题:)
我想编写一个备份脚本来保存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
请注意,由于管道,循环可能在子壳中运行,因此变量变化不会传播回父壳。
希望这有帮助=)