unix-shell脚本执行异常,一直循环

问题描述

shell脚本执行异常,一直循环

脚本目的,分析脚本执行结果,将有问题的项目附加到结果后面。

#!/bin/bash

function analyse_report()
{
abnormal_item=$1
IP=$2
case "$abnormal_item" in
3)
echo "hostname of $IP">>Linux_1410221605.txt
cat ../result/1410231618/result_192.168.59.199/hostname.log >>Linux_1410221605.txt
;;
4)
echo "system_version of $IP">>Linux_1410221605.txt
cat ../result/1410231618/result_192.168.59.199/uname.log | awk '{print $3}'>>Linux_1410221605.txt
;;
5)
echo "disk_usage of $IP">>Linux_1410221605.txt
cat ../result/1410231618/result_192.168.59.199/df.log>>Linux_1410221605.txt
;;
6)
echo "CPU_usage of $IP">>Linux_1410221605.txt
cat ../result/1410231618/result_192.168.59.199/iostat.log>>Linux_1410221605.txt
;;
7)
echo "IO_usage of $IP">>Linux_1410221605.txt
cat ../result/1410231618/result_192.168.59.199/iostat.log >>Linux_1410221605.txt
;;
8)
echo "MEM_usage of $IP">>Linux_1410221605.txt
cat ../result/1410231618/result_192.168.59.199/free.log>>Linux_1410221605.txt
;;
9)
echo "SWAP_usage of $IP">>Linux_1410221605.txt
cat ../result/1410231618/result_192.168.59.199/free.log| >>Linux_1410221605.txt
;;
esac
}
echo "nn" >>Linux_1410221605.txt
echo "****************************The following is the abnormal items****************************n" >>Linux_1410221605.txt
while read line
do
Result_line=echo $line |grep ^[[:digit:]]|grep "XX"
for((i=1;i<=7;i++))
do

Item_num=$[$i+2] >/dev/null 2>&1
IP=echo $Result_line | awk '{print $1}'
Result=echo $Result_line|tr -s [" "] [":"]|cut -d ":" -f $Item_num
if [ "$Result" == "--" ]
then
continue
else
analyse_report $Item_num $IP
fi
done

done < "Linux_1410221605.txt"

Linux_1410221605.txt格式
192.168.1.1 test -- -- XX -- -- -- -- 1410231700

脚本运行后,发现两个参数没有传递到function,而且程序一直循环,
没找到错误,求解!!! 不胜感激!

解决方案

Result_line=echo $line |grep ^[[:digit:]]|grep "XX"
IP=echo $Result_line | awk '{print $1}'
Result=echo $Result_line|tr -s [" "] [":"]|cut -d ":" -f $Item_num

赋值要加``或$()

Result_line=$(echo $line |grep ^[[:digit:]]|grep "XX")

时间: 2024-10-30 07:54:10

unix-shell脚本执行异常,一直循环的相关文章

Linux/Unix shell 脚本跨服务器跨实例执行SQL

      在DB运维的过程中,难免碰到需要跨多个服务器以及多个Oracle实例查询数据库的情形.比如我们需要查看当前所有生产环境数据库上open_cursor参数的值以便考虑是否需要增加.而需要查看的数据库服务器上有多个实例,同时又存在多个数据库服务器,这样子下来,几十个DB,上百个的情形一个个查,那得把人给累死.那就像点办法撒,写个shell脚本,轮巡所有服务器及服务器上的所有实例.见本文的描述.      关于shell脚本中如何调用SQL,可以参考下列链接:           Linu

Linux/Unix shell 脚本中调用SQL,RMAN脚本

        Linux/Unix shell脚本中调用或执行SQL,RMAN 等为自动化作业以及多次反复执行提供了极大的便利,因此通过Linux/Unix shell来完成Oracle的相关工作,也是DBA必不可少的技能之一.本文针对Linux/Unix shell脚本调用sql, rman 脚本给出了相关示例.   一.由shell脚本调用sql,rman脚本 1.shell脚本调用sql脚本 #首先编辑sql文件 oracle@SZDB:~> more dept.sql connect

求救!求救ssh2 远程Shell脚本执行工具的问题

问题描述 最近在用ssh2远程Shell脚本执行工具写了一个代码测试执行普通的命令都可以比如"ls"啦什么的都可以但是执行动态的就不可以比如"top"也没有错误只是返回的是"".求大家帮忙呀!下面是代码main是测试用的是root的权限packagecom.syxp.sjyw.util;importjava.io.IOException;importjava.io.InputStream;importjava.nio.charset.Charse

Linux/Unix shell 脚本清除归档日志文件

      对于DEV以及UAT环境,有些时候,数据库需要处于归档模式,但并不需要备份数据库.因此,archive归档日志不停的增长导致磁盘空间被大量耗用.对于这种情形,可以使用一个shell脚本来定时自动清除这些归档日志.本文给出了清除归档日志的脚本.   1.清除归档日志shell脚本   robin@SZDB:~/dba_scripts/custom/bin> more remove_arch_dump.sh #!/bin/bash # --------------------------

Unix Shell脚本编程知识点

脚本编程语言与编译型语言: 脚本编程语言:(Bash) 脚本编程语言通常是解释型(interpreted),主要由解释器(interpreter)读入程序代码,并将其转换成内部的形式加以执行. 优点: 能够轻易处理文件与目录之类的对象. 缺点: 运行效率通常不如编译型语言 编译型语言:(C.C++.Java.Fortran.Ada.Pascal) 编译型语言多半运作于底层,所处理的是字节.整数.浮点数或其它及其机器层经的对象. SHELL脚本的基本语法格式: 脚本必须以#!开头:(# cat /

shell脚本执行时报&quot;bad interpreter: Text file busy&quot;的解决方法

在执行一个shell脚本时,遇到了"-bash: ./killSession.sh: /bin/bash: bad interpreter: Text file busy"错误提示,如下所示: [oracle@DB-Server bin]$ ./killSession.sh      -bash: ./killSession.sh: /bin/bash: bad interpreter: Text file busy 此时只需要在#!/bin/bash,加一空格#! /bin/bash

Linux/Unix shell 脚本监控磁盘可用空间

    Linux下监控磁盘的空闲空间的shell脚本,对于系统管理员或DBA来说,必不可少.下面是给出的一个监控磁盘空间空间shell脚本的样本,供大家参考.   1.监控磁盘的空闲空间shell脚本 robin@SZDB:~/dba_scripts/custom/bin> more ck_fs_space.sh #!/bin/bash # -----------------------------------------------------------------------------

Shell脚本中使用for循环和cat命令实现按顺序合并文件_linux shell

工作目录下面有mydoc1.txt,mydoc2.txt...mydoc41.txt,本来想用sed排列依次取值排序,然后用cat来合并这些文件,发现达不到预期效果,合并令如下所示: 复制代码 代码如下: ls -lF *.txt | sed  -n '/mydoc1/,/mydoc41/p' | xargs -i cat {}> >mynew.txt 发现用其命令达不到预期效果,后来经检查发现,问题应该出现在sed排序上面,它仍然是按照位数来进行排序,并没有智能的按照范围来排序,sed取值命

如何在Shell脚本中跟踪调试命令的执行

在 shell 脚本调试系列 中,本文将解释第三种 shell 脚本调试模式,即 shell 跟踪,并查看一些示例来演示它如何工作以及如何使用它. 本系列的前面部分清晰地阐明了另外两种 shell 脚本调试模式:详细模式和语法检查模式,并用易于理解的例子展示了如何在这些模式下启用 shell 脚本调试. 如何在 Linux 中启用 Shell 脚本的调试模式 如何在 Shell 脚本中执行语法检查调试模式 shell 跟踪简单的来说就是跟踪 shell 脚本中的命令的执行.要打开 shell 跟