私のcat /proc/mdstat
結果は次のとおりです。_
角かっこの間に下線がある場合[]
にのみ、echo "OK"または "FAIL"をエクスポートしたいと思います。どうすればいいですか?
[root@srv4 ~]# cat /proc/mdstat
Personalities : [raid1] [raid10]
md6 : active raid10 sda6[0] sdd6[3] sdb6[1] sdc6[2]
7237440512 blocks 512K chunks 2 near-copies [4/4] [UUUU]
bitmap: 0/54 pages [0KB], 65536KB chunk
md5 : active raid10 sdb5[1] sda5[0] sdc5[2] sdd5[3]
153594880 blocks 512K chunks 2 near-copies [4/4] [UUUU]
md3 : active raid1 sda3[0] sdc3[2] sdb3[1] sdd3[3]
209918912 blocks [4/4] [UUUU]
bitmap: 2/2 pages [8KB], 65536KB chunk
md2 : active raid1 sdd2[3] sdc2[2] sda2[0] sdb2[1]
523200 blocks [4/4] [UUUU]
[root@srv2 public]# cat /proc/mdstat
Personalities : [raid1]
md6 : active raid1 sda6[0] sdb6[1]
1588416448 blocks [2/2] [UU]
bitmap: 0/12 pages [0KB], 65536KB chunk
md5 : active raid1 sdb5[1] sda5[0]
153597888 blocks [2/2] [UU]
bitmap: 0/2 pages [0KB], 65536KB chunk
md3 : active raid1 sda3[0] sdb3[1]
209918912 blocks [2/2] [UU]
bitmap: 1/2 pages [4KB], 65536KB chunk
md2 : active raid1 sda2[0] sdb2[1]
523200 blocks [2/2] [UU]
可能性が[_UU]
高い[_UUUU]
予想される結果:
if there is no [_] between any of brackets is "OK"
if there is [_] between any of brackets is "FAIL"
ベストアンサー1
簡単な解決策は
#!/bin/sh
if grep -q '\[.*_.*]' /proc/mdstat
then
echo FAIL
else
echo OK
fi
これは、入力行にa [
、a _
、aが順番に含まれているが]
(おそらく)他の文字と混在していることを確認します。簡単な解決策では不完全だと思われます。
sda6[0] _sdb6[1]
パターンに合わせて。
このバージョン:
#!/bin/sh
if grep -q '\[[^]]*_.*]' /proc/mdstat
then
echo FAIL
else
echo OK
fi
リクエスト[
の後に_
]
途中で文字なし_
(最終フォローアップの要件を維持します ]
。これはまだ機能します。
sda6[0_ sdb6[1]
_
括弧の間に1つがあるためです。私が知る限り、この入力の解釈はあいまいで、質問に間違ったデータを処理する方法が示されていないので気にしません。