値が変動するStatusがあって、正規表現で最後のけたには何が入ってもOKというコードを作成
385381$
385380$
385381$
### Check: MemoryMBUsed
source_filepath="/home/stack/tmp/healthcheck_dir/cbis_checkfiles/MemoryMB_list.txt"
i=1
#end_number=`wc -l "${source_filepath}" 2>&1 | awk '{print $1}'`
while read line; do
if [ $i -lt $end_number ] && [ "${line}" == "39288*" ]; then
((i+=1))
elif [ $i -eq $end_number ]; then
echo "# Check MemoryMBUsed="${ok_status}""
else
echo "# Check MemoryMBUsed="${ko_status}""
echo ">>> Line:$i:Error"
break
fi
done < "${source_filepath}"
下記のところでエラーが発生(・ω・)ノ
まあ、書き方が間違っているだろう...
と思ったらend_numberにコメントが入っていた(笑)
if [ $i -lt $end_number ] && [ "${line}" == "39288*" ]; then
再実行してみたら、失敗
なんで?だと思ってTest Scriptを作成して試して見た。
if [ 1 == * ]; then
echo "True"
else
echo "False"
fi
エラーメッセージ : Too many arguments...?
if [ 1 == "*" ]; then
echo "True"
else
echo "False"
fi
エラーメッセージは消えたが、正しい結果には至らず
何が気に食わないのか教えてくれ ( ´ー`)
調べたところ、Bashは文字列と数字の区別がないようだ。
つまり[" "]で囲むことは関係ないということ
if [ 1 ==* ]; then
echo "True"
else
echo "False"
fi
良く分からず、右側の空白を消してみたら、
エラーメッセージ : unary operator expected
if [ 1==* ]; then
echo "True"
else
echo "False"
fi
余計に空白を入れないのがよさそうだ。
繊細な奴だな(・ω・)ノ