1

私はここで新しいです、そして私は私の問題を説明するために最善を尽くします:)

lvKVMで使用されるすべてのものを保存するためのバックアップスクリプトを作成したいと思います。

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コマンドが具体的すぎるため何も機能しませんでした:/

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

ただし、パイピングのため、ループはサブシェルで実行される可能性があるため、変数への変更は親シェルに伝播されないことに注意してください。

これがお役に立てば幸いです=)

于 2012-10-16T13:13:48.320 に答える