3

私は設定ファイルを持っています....

# LogicalUnit section
[LogicalUnit1]
  LUN0 /mnt/extent0 64MB
[LogicalUnit2]
  LUN0 /mnt/extent1 64MB
[LogicalUnit3]
  LUN0 /mnt/extent4 10MB

LUN で始まるすべての行からフィールド 2 と 3 を変数に読み取り、それらの変数を使用してシェル コマンドを実行する必要があります。

そう... LUN0、フィールド 2 とフィールド 3 を変数に読み込みます

/mnt/extent4 10MB

だから、言って

A=/mnt/extent4
B=10MB
var1=A
var2=B

exec command -s $B $A 

ロジックはわかりましたが、ファイルをループし、2 つのフィールドを読み取って bash に戻す方法がわかりません。bash grep と awk で 2 日間過ごしましたが、まだそこにいません。前もって感謝します

4

3 に答える 3

4

awk を使用すると、値を取得できます。

$ awk '/LUN/ {print $2, $3}' a
/mnt/extent0 64MB
/mnt/extent1 64MB
/mnt/extent4 10MB

そして、パイプして処理します:

$ awk '/LUN/ {print $2, $3}' a | while read a b
> do
> echo "this is $a and this is $b"
> echo "exec $a $b"
> done
this is /mnt/extent0 and this is 64MB
this is /mnt/extent1 and this is 64MB
this is /mnt/extent4 and this is 10MB

または

$ awk '/LUN/ {print $2, $3}' a | while read a b; do echo "this is $a and this is $b"; echo "exec $a $b"; done
this is /mnt/extent0 and this is 64MB
exec /mnt/extent0 64MB
this is /mnt/extent1 and this is 64MB
exec /mnt/extent1 64MB
this is /mnt/extent4 and this is 10MB
exec /mnt/extent4 10MB

またはさらに良い(kojiroに感謝):

awk '/LUN/ {system("command " $2 $3);}'
于 2013-10-16T22:23:02.910 に答える