Linux Shell输出命令结果到脚本变量中

时间:2021-11-21 15:34:26

   这段遇到一个场景就是必须依据某些命令的执行结果,例如,lsmod | grep sctp  | grep -v grep|wc -l来进行某些判断。我们知道在默认情况下脚本命令的输出是标准输出或者管道到别的命令作为标准输入,不管上面如何弄,个概念上都是符合文件描的范畴。但如何跨越标准输出到脚本中的变量呢?跨越了文件系统和脚本领域,我感觉是一个比较大的跨!!查阅了《Linux 命令、编辑器与shell编程》不得不说明此书确实写的很一般,好多东西说的不够透彻和明白,在我看来仅是简单的罗列。

  先是开始研究这本书,后来实在是觉得在这本书上找不到线索,也废了大半天的时间,就觉得需要采取更高效的方式,问一下别的同事或朋友,这一问还真问出了“突破口”,就是利用反引号将脚本命令括住就可以将脚本命令的执行结果传递到变量中,完成一步非常大的跨越!

   既然能够将脚本执行结果转化到变量里面,那么就可以利用变量参与到后面的逻辑判断当中,就完成了所需要的功能。后来查阅了网上资料,知道$()机制也可以得到类似的击结果,而且更符合POSIX。

 而且利用这种方式,将脚本执行结果导向脚本,还可以通过for  in 的脚本语句,实现某些循环操作。'也就是$()可以制造出来一个集合的脚本变量出来。这样就增强了互操作性。

   这次遇到的问题实际与JDK7和Linux SCTP有关系,虽然通过rpm安装了lksctp-tools的rpm,但是linux内核却不能保证SCTP模块被加载,在启动SCTP OPEN的时间就遇到系统不支持的协议的提示,但是又在某些环境下是可以正常工作的。所以,简单规避来做,必须判断sctp模块有没有被加载,然后如果没有被加载则通过modprobe命令加载SCTP。