[shell]实现脚本执行结果匹配某个字符串

今天接到一个这个要求,就是脚本执行结果中包含某个字符串,要求查出来。

我给的思路是 按照脚本名和结果 以 追加 的方式写入文本,然后从这个文本中查找相应的内容。

对方给的思路是以执行结果来判断,就自己实现了这种方式

首先是按照目录写入脚本,这里是在脚本中写入了echo $i的内容。也就是脚本有执行结果。

#!/bin/bash
SH_DIR=sh_dir
cd $SH_DIR
for i in $(seq 50);
do
        echo "echo $i">$i.sh
done

然后是循环执行并查找的脚本,这里是全部遍历了一遍,可以自己做成仅发现第一个就终止。

 1 #!/bin/bash
 2 SH_DIR=sh_dir
 3 for runsh in `ls $SH_DIR | grep .sh`;
 4 do
 5         echo $runsh
 6         result=`./$SH_DIR/$runsh`
 7         echo $result
 8         echo $result | grep ‘8‘
 9
10         if [ $? -ne 0 ];
11         then
12                 echo ""
13         else
14                 echo "find it in $runsh "
15         fi
16 done

其中第5行和第7行都可以注释,就显示的更清楚了。

我觉得用python实现可能更快一点。估计我学习python的时间更长。

伪代码跟这个类似,先for循环遍历可执行文件,然后存储结果,用if做一个对比。

原文地址:https://www.cnblogs.com/yunzaixiao/p/9387632.html

时间: 2024-11-06 13:51:24

[shell]实现脚本执行结果匹配某个字符串的相关文章

shell脚本实现检测回文字符串

所有回文字的结构特征如下: 如果字符数是偶数,那么它在结构上表现为:一个字符序列连着另一个字符相同但次序恰好相反的字符序列. 如果字符数为奇数,那么它在结构上表现为:一个字符序列连着另一个字符相同但次序恰好相反的字符序列,但是这两个序列中间共享一个相同的字符. sed命令能够记住之前匹配的子样式.可以用正则表达式:'\(.\)',匹配任意一个字符,\1表示其反向引用.如匹配有两个字符的回文正则表达式为: '\(.\)\(.\)\2\1' 匹配任意长度的回文脚本如下所示: #!/bin/bash

shell脚本编程之变量简介及脚本执行过程

脚本变量简介 变量类型:字符型.数值型.真.假:事先确定数据的存放格式和长度: 变量存放在内存空间: 编译型语言,没有额外的处理逻辑,属于强类型语言: 脚本型语言,可以有解释器控制:所以,可以是弱类型语言: 强类型:变量在使用前,必须事先声明,甚至还需要初始化(给一个初始值,如果没给一个原始值,里面是随机数): 弱类型:变量用时声明,甚至不需要区分类型(默认为字符串): 变量赋值:VAR-NAME=VALUE: bash shell变量类型: 环境变量 本地变量(局部变量),局部变量不一定都是本

linux下shell脚本执行方法及exec和source命令

exec和source都属于bash内部命令(builtins commands),在bash下输入man exec或man source可以查看所有的内部命令信息. bash shell的命令分为两类:外部命令和内部命令.外部命令是通过系统调用或独立的程序实现的,如sed.awk等等.内部命令是由特殊的文件格式(.def)所实现,如cd.history.exec等等. 在说明exe和source的区别之前,先说明一下fork的概念. fork是linux的系统调用,用来创建子进程(child

linux shell脚本执行错误:bad substitution

脚本test.sh内容: #!/bin/bash read pressKey indexes=0 c=${pressKey:indexes:1} 使用调试方式执行:sh -x test.sh第3行总出现bad substitution提示信息. 百思不得其解: 于是百度,查到一条有用信息,这与linux shell使用的是/bin/sh,还是/bin/bash有关系.我的脚本中指定使用的是/bin/bash shell,但是我在调试的时候使用的是sh shell,因此调试时导致错误提示信息. 解

二、shell文件权限和脚本执行

一.认识权限和用户管理 1.查看权限 权限类型: 1.r 读 2.w 写 3.x 可执行 Linux用户 1.所有者(u) 2.所属组(g) (所有者及所有者所在组的全部用户) 3.其他用户(o)(其他组的所有用户(包括文件所有者)) 4.所有用户(a) 文件权限解读 文件类型 所有者权限  所属组权限  其他用户权限            所有者  用户所在的组  文件大小  创建时间  文件名 [[email protected] ~]# ll 总用量 100 -rw-------. 1 r

shell脚本执行超时怎么办?

在shell里会有一种不太常见的情况,就是脚本有时候会出现超时的现象.一般来说遇到这种问题,我们都会简单粗暴的采用下面这种脚本来当"超时看门狗": #!/bin/bash ./$1 &    #这里设定后台运行的第一个参数 pid = $!    #最后一个运行的process的PID值 sleep $2 && kill -9 $pid &    #如果超过了$2的值的话,就会把那个PID干掉 这个脚本搭配两个变量使用的话,监控一点小代码还算OK,但是它

shell脚本执行及配置文件

linux之shell脚本执行及配置文件 bash脚本执行方法:     1 解释器直接运行         /usr/bin/bash bash FOO.sh     2 使用路径运行脚本(需要有x权限)         chmod +x FOO.sh         /PATH/TO/FOO.sh     3 使用.或source命令执行脚本         . /PATH/TO/FOO.sh         source /PATH/TO/FOO.sh     1,2执行方法和3执行方法的

shell脚本执行冲突事件-ssh&while

今天发现一个问题: 先看下脚本内容: [email protected]/0 # cat !$ cat /tmp/test_nginx ls *.txt | tr ' ' '\n' | while read line do  echo $line if [ 'yes' == 'yes' ] then ssh  192.168.109.10 "echo 'yes'" else ssh 192.168.109.10 "echo 'no'" fi done 上面脚本很简单

Linux Shell之脚本的执行

(1)shell如何执行一个命令 Linux的命令分为两类:一类是shell的内建命令:另一类则是独立于shell的命令.别忘了,shell也只是系统中的一个程序而已,当它执行非内建命令时,本质上是在呼叫另一只程序,比如ls.下面验证一下: m@meng:~/scripts$ which sh /bin/sh m@meng:~/scripts$ file /bin/sh /bin/sh: symbolic link to `dash` m@meng:~/scripts$ file /bin/da