我正在尝试执行以下脚本,
data=$(printf "%s " $(find output.log -type f -exec grep 'ACTIVE\| NOT ACTIVE' {} \; | awk '{print $1}'))
status=`find output.log -type f -exec grep 'ACTIVE\| NOT ACTIVE' {} \; | awk '{print $3}'`
case "$data" in
("Instance1")
echo "Status for Instance1 is : $status";
;;
("Instance2")
echo "Status for Instance2 is : $status";
;;
"") echo "empty things"
;;
esac
但它没有显示任何输出..也许我在我的脚本中遗漏了一些东西(可能很多)
我在上面的脚本中使用的logfile
是ie。 output.log
,
INSTANCE_NAME OPEN_STATUS STATUS
---------------- ------------ -----------------
Instance1 OPEN ACTIVE
Instance2 OPEN NOT ACTIVE
有谁能告诉我上面的脚本有什么问题?
谢谢,
答案 0 :(得分:1)
您不会遍历您的参赛作品,因此您永远不会拥有数据" Instance1"但是" Instance1 Instance2"。 您可能需要以下内容:
items=$(grep -0 'ACTIVE\| NOT ACTIVE' output.log | tr -s ' ' )
IFS=$'\r\n'
for it in $items; do
data=$(echo $it | cut -d ' ' -f1 )
status=$(echo $it | cut -d ' ' -f3- )
case "$data" in
("Instance1")
echo "Status for Instance1 is : $status";
;;
("Instance2")
echo "Status for Instance2 is : $status";
;;
"") echo "empty things"
;;
esac;
done